Numpy数组形状问题

时间:2016-09-07 04:14:50

标签: numpy

我已初始化此空2d np.array

inputs = np.empty((300, 2), int)

我试图在它上面添加一行2d

inputs = np.append(inputs, np.array([1,2]), axis=0)

但我得到了

ValueError: all the input arrays must have same number of dimensions

Numpy认为这是一个2行的0维对象(2d的转置)

np.array([1, 2]).shape

  

(2)

我哪里出错?

3 个答案:

答案 0 :(得分:3)

要向(300,2)形状数组添加行,您需要(1,2)形状数组。请注意匹配的第二维。

np.array([[1,2]])有效。 np.array([1,2])[None, :]np.atleast_2d([1,2])也是如此。

我鼓励使用np.concatenate。它迫使你更仔细地考虑尺寸。

你真的想从np.empty开始吗?看看它的价值观。它们是随机的,可能很大。

@Divakar建议np.row_stack。这让我感到困惑,直到我检查并发现它只是np.vstack的另一个名字。该函数在执行np.atleast_2d之前通过np.concatenate传递所有输入。因此,最终使用相同的解决方案 - 将(2,)数组转换为(1,2)

答案 1 :(得分:0)

Numpy需要双括号来声明数组文字,所以

np.array([1,2])

需要

np.array([[1,2]])

答案 2 :(得分:0)

如果您打算将其作为最后一行追加到inputs,您只需使用np.row_stack -

np.row_stack((inputs,np.array([1,2])))

请注意,此np.array([1,2])1D数组。

您甚至可以将2D行版本传递给相同的结果 -

np.row_stack((inputs,np.array([[1,2]])))