想象我有這樣的事情:迭代和多維數組在Python
import numpy as np
arra = np.arange(16).reshape(2, 2, 4)
這給
array([[[0, 1, 2, 3],
[4, 5, 6, 7]],
[[8, 9, 10, 11],
[12, 13, 14, 15]]])
,我想使沿特定子陣列運行一個循環(在這種情況下,我想沿每個'矩陣'的每個'列')運算結果(即選擇0和4並將它們相加(4),選擇1和5並將它們相加(6), ...,選擇3和7並將它們相加(10),選擇8和12並將它們相加(20),...,選擇11和15並將它們相加(26))。
我原以爲這樣做與自然明顯:
for i in arra[i, j, k]:
for j in arra[i, j, k]:
for k in arra[i, j, k]:
sum...
問題是Python的肯定不允許做什麼,我想用這種方式。如果它是二維數組,它會更容易,因爲我知道迭代器首先遍歷行,所以可以轉置爲沿列運行,但對於多維(此例中爲3D)數組(N,M,P)與N,M,P >> 1,我想知道如何做到這一點。
編輯:這個問題在這裏有一個延續:Choosing and iterating specific sub-arrays in multidimensional arrays in Python
謝謝,你的回答是非常有用的,但我想知道...,想象你有興趣,在與前面相同的例子中,總結偶數行的值,即0 + 8,1 + 9 ,2 + 10,...,4 + 12,7 + 15(按列求和,但以偶數行求和)。有沒有一個通用的方法來做到這一點? – David
@大衛:當然。我編輯了我的答案,併爲此添加了解決方案。 – Cleb
謝謝,但我仍然想知道是否有更通用的方法。想象一下,我想添加第一個與最後一個,中間,即0 + 12,1 + 13,...,4 + 8,5 + 9,... 7 + 11。還有可能嗎?你需要巧妙的座標轉換嗎? – David