Numpy - 向数组添加行
如何向一个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)
有没有什么
谢谢,S ;-)
10 个回答
58
这个问题已经有7年了,我现在用的是numpy 1.13版本和python3。我在给一个矩阵添加一行的时候,记得在第二个参数上加上双括号,否则会出现维度错误。
在这里,我是在给矩阵A添加一行
1 2 3
4 5 6
用的是一行数据
7 8 9
在np.r_
中用法是一样的
A = [[1, 2, 3], [4, 5, 6]]
np.append(A, [[7, 8, 9]], axis=0)
>> array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
#or
np.r_[A,[[7,8,9]]]
如果有人感兴趣,想要添加一列的话,
array = np.c_[A,np.zeros(#A的行数)]
这和我们之前在矩阵A上做的事情一样,是在给它添加一列
np.c_[A, [2,8]]
>> array([[1, 2, 3, 2],
[4, 5, 6, 8]])
如果你想把数据放在最前面,只需要把参数的顺序调换一下,比如:
np.r_([[7, 8, 9]], A)
>> array([[7, 8, 9],
[1, 2, 3],
[4, 5, 6]])
255
你可以这样做:
newrow = [1, 2, 3]
A = numpy.vstack([A, newrow])
153
什么是 X
? 如果它是一个二维数组,那你怎么能把它的某一行和一个数字比较,比如 i < 3
呢?
根据提问者的评论更新:
A = array([[0, 1, 2], [0, 2, 0]])
X = array([[0, 1, 2], [1, 2, 0], [2, 1, 2], [3, 2, 0]])
把所有第一元素小于 3
的 X
的行添加到 A
中:
import numpy as np
A = np.vstack((A, X[X[:,0] < 3]))
# returns:
array([[0, 1, 2],
[0, 2, 0],
[0, 1, 2],
[1, 2, 0],
[2, 1, 2]])