2016-06-17 291 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個元素...