Skip to main content
 首页 » 编程设计

python之在没有循环的情况下在数组中累加数字。 (Python)

2025年05月04日21kerrycode

所以我有一个(看似)简单的问题,我目前正在通过 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