在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 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作为变量名可能不是一个好的做法,因为它掩盖了内置类型的名称,这可能会导致错误。