numpy.append如何使用

时间:2014-05-20 17:01:29

标签: python arrays numpy

我想将我的numpy数组追加到循环中。在开始时我的numpy数组是空的。

x = np.array([])

我想用3元素长数组追加x以获得Mx3矩阵,但是我的数组在一个维度上追加...出了什么问题?

In [166]: x = np.array([])

In [167]: a
Out[167]: array([248, 249, 250])

In [168]: x = np.append(x,a, axis=0)

In [169]: x
Out[169]: array([ 248.,  249.,  250.])

In [170]: x = np.append(x,a, axis=0)

In [171]: x
Out[171]: array([ 248.,  249.,  250.,  248.,  249.,  250.])

2 个答案:

答案 0 :(得分:2)

使用vstack

In [51]: x = np.array([])

In [52]: a= np.array([248, 249, 250])

In [53]: x = np.append(x,a, axis=0)

In [54]: np.vstack((x,a))
Out[54]: 
array([[ 248.,  249.,  250.],
       [ 248.,  249.,  250.]])

不确定您使用的方式,但我怀疑您需要使用np.append(x,a, axis=0)。只需设置x=a,然后设置vstack

答案 1 :(得分:1)

你的初始x是一维的,这是错误的。参见:

z = np.array([])
z.shape
# (0,)
np.ndim(z)
# 1

因此,如果你np.appendx,你总会得到一维数组,即矢量。请注意,在Numpy中,一维数组是行向量。

要使用np.append,您可以从这样的2D数组开始。此外,您追加的数组必须与您追加的数组具有相同的维数。

z = np.array([]).reshape((0,3))

a = np.array(248, 249, 250)

a2d = a.reshape(1, 3)
# a2d = np.atleast_2d(a)
# a2d = a[None, :]
# a2d = a[np.newaxis, :]

z = np.append(z, a2d, axis=0)