Numpy数组形状问题

Numpy数组形状问题,numpy,Numpy,我已初始化此空2dnp.array inputs=np.empty((300,2),int) 我正试图将一个2d行附加到它上面 inputs=np.append(inputs,np.array([1,2]),axis=0) 但是我越来越 ValueError:所有输入数组必须具有相同的维数 Numpy认为它是一个2行0维对象(2d的转置) np.array([1,2]).shape (2,) 我哪里出错了?Numpy需要双括号来声明数组文字,所以 np.array([1,2]) 需要 np.ar

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

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

我正试图将一个2d行附加到它上面

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

但是我越来越

ValueError:所有输入数组必须具有相同的维数

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

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

(2,)


我哪里出错了?

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

np.array([1,2])

需要

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

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

np.array([[1,2]])
np.array([1,2])[None,:]
np.atlyst_2d([1,2])

我鼓励使用。它迫使您更仔细地考虑尺寸

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


@Divakar
建议
np.row\u堆栈
。这让我有点困惑,直到我检查发现它只是
np.vstack
的另一个名称。该函数在执行
np.concatenate
之前,至少通过
np.2d
传递所有输入。因此,最终的解决方案是相同的——将
(2,)
数组转换为
(1,2)
如果您打算将其作为最后一行附加到
输入中,只需使用
np.row\u堆栈即可-

np.row_stack((inputs,np.array([1,2])))
请注意这个
np.数组([1,2])
是一个
1D
数组

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

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

请注意插入的数组的形状:
np.array([[1,2]])。shape
(2,)
是1d数组。它不是其他任何东西的转置。两者都创建数组,一个数组具有形状
(2,)
,另一个数组具有形状
(1,2)
、1d和2d。我不知道你所说的
array literal
@hpaulj是什么意思:我想冒险说,recovery是想说“要把matlab数组literal
[1,2]
翻译成一个numpy,你[有时]需要一组额外的括号”以前从未听说过
行堆栈
<代码>vstack
yes.)@hpaulj是的,显然,它甚至没有记录:)