我已初始化此空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)
我哪里出错?
答案 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]])))