什麼是Matlab中以下簡單代碼的等效pythonic實現。Python:多維數組屏蔽
Matlab的:
B = 2D array of integers as indices [1...100]
A = 2D array of numbers: [10x10]
A[B] = 0
如例如,其可以很好地用於B[i]=42
它找到的位置5
柱的2
進行設置。 在的Python它導致出錯:結合是邏輯。但是要將上面的Matlab代碼翻譯成Python,我們正在尋找pythonic方法。 也請考慮更高的維度,如問題:我們想過
B = 2D array of integers as indices [1...3000]
C = 3D array of numbers: [10x10x30]
C[B] = 0
的方法之一是改革指數數組元素作爲i,j
,而不是被絕對位置。也就是說,位置42
到divmod(42,m=10)[::-1] >>> (2,4)
。所以我們將有一個nx2 >>> ii,jj
向量的索引,可以很容易地用於索引A
。 我們認爲這可能是一種更好的方式,對於更高維的高效率,Python。
「在Python它會導致一個錯誤:總分這是合乎邏輯的「......這是什麼原因造成的?你能展示你用Python試過的東西嗎? –
爲什麼使用二維數組作爲另一個二維數組的索引? – 0605002
@LaurenceGonsalves正如問題中所提到的,A.shape =(10,10)所以用A [42]索引是不合法的!對於Matlab代碼,情況並非如此,因爲它自動將第42行與第2行和第4列匹配。 – Developer