如何向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方法来做同样的事情?

谢谢, 年代;-)


当前回答

我使用numpy。插入(arr, i, the_object_to_be_added, axis),以便在第i行(轴=0)或第i列(轴=1)插入object_to_be_added

import numpy as np

a = np.array([[1, 2, 3], [5, 4, 6]])
# array([[1, 2, 3],
#        [5, 4, 6]])

np.insert(a, 1, [55, 66], axis=1)
# array([[ 1, 55,  2,  3],
#        [ 5, 66,  4,  6]])

np.insert(a, 2, [50, 60, 70], axis=0)
# array([[ 1,  2,  3],
#        [ 5,  4,  6],
#        [50, 60, 70]])

太旧的讨论了,但我希望它能帮助到一些人。

其他回答

我使用numpy。插入(arr, i, the_object_to_be_added, axis),以便在第i行(轴=0)或第i列(轴=1)插入object_to_be_added

import numpy as np

a = np.array([[1, 2, 3], [5, 4, 6]])
# array([[1, 2, 3],
#        [5, 4, 6]])

np.insert(a, 1, [55, 66], axis=1)
# array([[ 1, 55,  2,  3],
#        [ 5, 66,  4,  6]])

np.insert(a, 2, [50, 60, 70], axis=0)
# array([[ 1,  2,  3],
#        [ 5,  4,  6],
#        [50, 60, 70]])

太旧的讨论了,但我希望它能帮助到一些人。

X是多少?如果它是一个2d数组,那么如何将它的行与一个数字进行比较:i < 3?

OP评论后编辑:

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

将X中第一个元素< 3的所有行添加到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]])

由于这个问题是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]]]

如果有人感兴趣,如果你想增加一列,

数组= np.c_[A,np. c_]0 (#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]])

你可以这样做:

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

你还可以这样做:

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