假设I
和J
是列向量,(长度 K ,比如说),这样对于有效索引k,{k的第k个条目{1}}和I
表示某些N-by-N矩阵J
中的行和列坐标。
使用MATLAB,要分配MAT
中的位置,其坐标对应于MAT
和I
指定的位置,可以写:
J
...其中MAT(sub2ind([N N], I, J)) = X;
是一些长度为 K 的矢量。
有了numpy,我能想到的最好的是
X
还有更多"口语numpy"这个方法呢?
答案 0 :(得分:4)
比numpy容易得多。
i = I.ravel()
j = J.ravel()
MAT[i,j] = X
我使用ravel
方法将列转换为一维数组。另一种选择是
MAT[I.flat, J.flat] = X
我无法在没有看到完整背景的情况下肯定地说,但我怀疑您可以修改创建I
和J
的代码,使其成为一维数组(即形状(K,)
)而不是形状为(K, 1)
的列。如果你这样做,你可以写
MAT[I,J] = X