2016-04-28 81 views
2

抱歉,如果這個問題是這樣基本numpy的數組:基本問題

A = np.arange(64).reshape(2,32)

array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], 
     [32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]]) 

A.reshape (4,4,4)

array([[[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11], 
     [12, 13, 14, 15]], 
     [[16, 17, 18, 19], 
     [20, 21, 22, 23], 
     [24, 25, 26, 27], 
     [28, 29, 30, 31]], 

     [[32, 33, 34, 35], 
     [36, 37, 38, 39], 
     [40, 41, 42, 43], 
     [44, 45, 46, 47]], 

     [[48, 49, 50, 51], 
     [52, 53, 54, 55], 
     [56, 57, 58, 59], 
     [60, 61, 62, 63]]]) 

現在,我將不得不喜歡像A [2]或A [2 ,:]或A [2,:,:]返回我矩陣

[[32, 33, 34, 35], 
[36, 37, 38, 39], 
[40, 41, 42, 43], 
[44, 45, 46, 47]] 

A[2,2,2]返回箱42例如

但我得到這個錯誤

IndexError: too many indices for array 
+0

你需要重構陣列分配到一個新的變量,然後才能做到這一點... – Forzaa

回答

2

你要做

A = A.reshape(4,4,4) 

,而不是

A.reshape(4,4,4) 

由於重塑不在原位,您需要這樣做。然後,你可以A.reshape(4,4,4)後做

A[2,2,2] 
Out[301]: 42 
+0

笑好了,我認爲這是一個愚蠢的問題,而且的確如此,謝謝 –

0

,A不會改變

+0

爲什麼罵?我已經看到很多答案需要進一步的解釋。這個問題本身就是隱含的。 '有什麼不對,或者我該如何對待?'。 – hpaulj