什么是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