如何在NumPy中创建空数组/矩阵?python建立空的ndarray
在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 row-by-row:
>>> 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数组是一个与列表非常不同的数据结构,它被设计为以不同的方式使用。您对hstack
的使用可能非常低效......每当您调用它时,现有数组中的所有数据都将被复制到一个新的数据中。 (append
函数将有相同的问题。)如果您想一次构建您的只有一个列的矩阵,最好将它保存在列表中,直到它完成,然后才转换为一个数组。
例如
mylist = []
for item in data:
mylist.append(item)
mat = numpy.array(mylist)
item
可以是一个列表,一个数组或任何可迭代的结构,只要每个item
具有相同数量的元素。在这个特定的情况下(data
是一些迭代持有矩阵列),你可以简单地使用
mat = numpy.array(data)
(还要注意,使用list
作为变量名可能不是一个好的做法,因为它掩盖了内置类型的名称,这可能会导致错误。