numpy相当于MATLAB的(向量化)sub2ind(...,I,J)

时间:2014-10-09 17:43:44

标签: numpy indexing

假设IJ是列向量,(长度 K ,比如说),这样对于有效索引k,{k的第k个条目{1}}和I表示某些N-by-N矩阵J中的行和列坐标。

使用MATLAB,要分配MAT中的位置,其坐标对应于MATI指定的位置,可以写:

J

...其中MAT(sub2ind([N N], I, J)) = X; 是一些长度为 K 的矢量。

有了numpy,我能想到的最好的是

X

还有更多"口语numpy"这个方法呢?

1 个答案:

答案 0 :(得分:4)

比numpy容易得多。

i = I.ravel()
j = J.ravel()
MAT[i,j] = X

我使用ravel方法将列转换为一维数组。另一种选择是

MAT[I.flat, J.flat] = X

我无法在没有看到完整背景的情况下肯定地说,但我怀疑您可以修改创建IJ的代码,使其成为一维数组(即形状(K,))而不是形状为(K, 1)的列。如果你这样做,你可以写

MAT[I,J] = X