Python 是否有更快的Numpy函数来执行add.at,但有两组索引?

Python 是否有更快的Numpy函数来执行add.at,但有两组索引?,python,arrays,numpy,multidimensional-array,scipy,Python,Arrays,Numpy,Multidimensional Array,Scipy,我正在尝试做一个非常类似于numpy.add.at的操作,但是有两对索引,我想知道是否有一种更快的方法可以使用numpy或其他东西来完成这个操作,而不是运行非常缓慢的for循环 以下方法可行,但我正在尝试更快地完成: for x,y in indices: A[B[x,y]] += C[x,y] 其中,为B[x,y]获得的值将有许多重复项,因此B[1,1]可能等于B[1,2] numpy.add.at(A,indexes,C)非常接近,但我无法理解,因为B基本上将索引映射到另一个空间。我希

我正在尝试做一个非常类似于numpy.add.at的操作,但是有两对索引,我想知道是否有一种更快的方法可以使用numpy或其他东西来完成这个操作,而不是运行非常缓慢的for循环

以下方法可行,但我正在尝试更快地完成:

for x,y in indices:
  A[B[x,y]] += C[x,y]
其中,为B[x,y]获得的值将有许多重复项,因此B[1,1]可能等于B[1,2]


numpy.add.at(A,indexes,C)
非常接近,但我无法理解,因为B基本上将索引映射到另一个空间。我希望有一种更快的方法来使用numpy或其他东西,可能没有显式循环。

是否有重复的
B
值?如果没有重复,那么
A[B]+=C的某个版本会更快。这是重复的可能性,需要添加.at
。也可以使用
numba
编写此命令,并获得良好的速度。但其他人必须在这方面帮助你
numba的
索引不如
numpy
灵活。谢谢你的问题-有很多重复的B值-我已经把它添加到了问题中。索引延伸的空间比B从索引映射的空间要大。考虑在B[x,y]上使用BiNoCuth.(),将参数权重设置为C[x,y] @ tStasl,就是这样!bincount似乎只在1d中工作,但我将数组展平并使用了它-难以置信的加速谢谢有重复的
B
值吗?如果没有重复,那么
A[B]+=C的某个版本会更快。这是重复的可能性,需要添加.at
。也可以使用
numba
编写此代码并获得良好的速度。但其他人必须在这方面帮助你
numba的
索引不如
numpy
灵活。谢谢你的问题-有很多重复的B值-我已经把它添加到了问题中。索引延伸的空间比B从索引映射的空间要大。考虑在B[x,y]上使用BiNoCuth.(),将参数权重设置为C[x,y] @ tStasl,就是这样!bincount似乎只能在1d中工作,但我将阵列展平并使用了它-难以置信的加速,谢谢