2016-06-17 123 views
1

对于numpy的阵列我发现,重塑numpy的阵列到一个多维数组

x = numpy.array([]).reshape(0,4) 

是精细和允许我追加(0,4)的阵列为x而不会在阵列丧失其结构(即它dosnt只是成为一个数字清单)。然而,当我尝试

x = numpy.array([]).reshape(2,3) 

它会引发错误。为什么是这样?

+0

追加'(2,3)'阵列沿着什么轴?使用示例数组来展示您的想法? – Divakar

+0

没关系,只是想知道为什么numpy.array([])。reshape(2,3)抛出错误 – Sruli

+0

'numpy.array([])。reshape(2,3)'抛出错误,因为'numpy。数组([])'有零个元素,所以你不能将'(2,3)'重新定义为期望总共'6'个元素。 – Divakar

回答

0

reshape不是'追加'功能。它重塑你给它的数组到你想要的尺寸。

np.array([]).reshape(0,4)因为您将零元素数组重构为一个0x4(= 0个元素)数组。
np.reshape([]).reshape(2,3)不起作用,因为您正试图将零元素数组重新整形为2x3(= 6元素)数组。

要创建一个空阵列,请改为使用np.zeros((2,3))

如果你想知道,numpy数组不能附加到。您必须将其转换为list,将所需内容和转换附加到numpy数组。最好只在以后不打算追加数据时才创建一个numpy数组。

1

这出认沽将解释什么意思,重塑一个数组...

np.array([2, 3, 4, 5, 6, 7]).reshape(2, 3) 

输出 -

array([[2, 3, 4], 
     [5, 6, 7]]) 

所以重塑只是意味着整形数组。重塑(0,4)意味着直观地将当前数组转换为0行4列的格式。但0行意味着没有元素的意思,所以它作为你的数组是空的。类似地(2,3)意味着2行和3列,这是6个元素...