所以我有一个(看似)简单的问题,我目前正在通过 for 循环解决这个问题。
基本上,我想递增 numpy 矩阵中的特定单元格,但如果可能的话,我想在没有 for 循环的情况下进行。
要提供更多详细信息:我有 100 x 100 numpy 矩阵,X。我还有一个 2x1000 numpy 矩阵 P。 P 只是将索引存储到 X 中,例如,P 的每一列都有我想要的单元格的行列索引在 X 中递增。
我现在做的是:
for p in range(P.shape[1]):
X[P[0,p], P[1,p]] += 1
我的问题是,有没有不用 for 循环的方法?
谢谢!
请您参考如下方法:
使用 at add ufunc 的方法 advanced indexing :
numpy.add.at(X, (P[0], P[1]), 1)
或者如果 P 保证永远不会两次选择 X 的相同单元格,则只是高级索引:
X[P[0], P[1]] += 1
