在NumPy中高效创建空数组或矩阵的几种方法
本文介绍在NumPy中创建空数组或矩阵的多种方法。重点对比了预分配数组与动态追加的性能差异,指出hstack和append会导致低效的数据复制。推荐通过列表收集数据后一次性转换为数组,或使用numpy.array直接处理可迭代对象,同时提醒避免使用list作为变量名。
如何在NumPy中创建空数组或矩阵?
若需逐行添加数据,最优策略是预先创建一个与最终数据集大小一致的数组,随后逐行填充数据。
>>> import numpy >>> a = numpy.zeros(shape=(5,2)) >>> a array([[ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.]]) >>> a[0] = [1,2] >>> a[1] = [2,3] >>> a array([[ 1., 2.], [ 2., 3.], [ 0., 0.], [ 0., 0.], [ 0., 0.]])
NumPy数组与Python列表属于截然不同的数据结构,设计用途也各不相同。使用hstack函数可能带来显著的性能损耗,因为每次调用时,现有数组的所有数据都会被复制到新分配的数组中。append函数也存在同样的问题。若需逐步构建矩阵,建议先将数据存入列表,待构建完成后一次性转换为数组。
mylist = [] for item in data: mylist.append(item) mat = numpy.array(mylist)
输入项可以是列表、数组或任何可迭代对象,前提是每个项包含相同数量的元素。
在此特定场景下,可直接使用numpy.array函数(其中data为保存矩阵列的可迭代对象)。
mat = numpy.array(data)
此外,请注意避免使用list作为变量名,因为这会遮蔽内置类型,可能导致程序出现Bug。
以上关于在NumPy中创建空数组或矩阵的方法即为全部内容,希望能对大家有所帮助,也欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









