Numpy数组形状问题
我已初始化此空2dNumpy数组形状问题,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
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是的,显然,它甚至没有记录:)