我想将我的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.])
答案 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.append
到x
,你总会得到一维数组,即矢量。请注意,在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)