如何向numpy数组添加行?

我有一个数组A

A = array([[0, 1, 2], [0, 2, 0]])

如果X中每一行的第一个元素满足特定条件,我希望从另一个数组X向该数组添加行。

Numpy数组不像列表那样有一个方法“append”,或者看起来是这样。

如果A和X是列表,我只会做:

for i in X:
    if i[0] < 3:
        A.append(i)

有没有一种numpythonic方法来做同样的事情?

谢谢, 年代;-)


当前回答

你可以这样做:

newrow = [1, 2, 3]
A = numpy.vstack([A, newrow])

其他回答

我用'np。vstack'更快,例如:

import numpy as np

input_array=np.array([1,2,3])
new_row= np.array([4,5,6])

new_array=np.vstack([input_array, new_row])

你可以这样做:

newrow = [1, 2, 3]
A = numpy.vstack([A, newrow])

您可以使用numpy.append()将一行附加到numpty数组中,并稍后将其重塑为矩阵。

import numpy as np
a = np.array([1,2])
a = np.append(a, [3,4])
print a
# [1,2,3,4]
# in your example
A = [1,2]
for row in X:
    A = np.append(A, row)

你还可以这样做:

newrow = [1,2,3]
A = numpy.concatenate((A,newrow))

如果可以在一个操作中完成构造,那么vstack-with-fancy-indexing之类的方法是一种很好的方法。但是如果你的情况更复杂,或者你的行是动态的,你可能想要增加数组。实际上,动态增长一个数组的numpythonic方法是动态增长一个列表:

A = np.array([[1,2,3],[4,5,6]])
Alist = [r for r in A]
for i in range(100):
    newrow = np.arange(3)+i
    if i%5:
        Alist.append(newrow)
A = np.array(Alist)
del Alist

列表针对这种访问模式进行了高度优化;在列表形式下没有方便的numpy多维索引,但只要追加,就很难比行数组列表做得更好。