类似numpy.add.at的产品



我有多个计数索引,如下例所示:

import numpy as np
a = np.ones(3)
np.add.at(a, np.array([0, 1, 1, 2, 2, 2]), np.array([1, 2, 3, 4, 5, 6]))

这为a提供了array([2, 6, 16])。对于产品,是否有同样的方法?那么像np.prod.at(a, ..., ...)这样的东西,哪个会返回array([1, 6, 120])?它不一定是numpy,但我需要它来进行密集的计算,所以如果可能的话,我不想保持numpy的速度。

您需要np.multiply.at,但起始数组应该包含1而不是0,原因很明显:

import numpy as np
a = np.ones(3)
np.multiply.at(a, np.array([0, 1, 1, 2, 2, 2]), np.array([1, 2, 3, 4, 5, 6]))
print(a)
# [  1.   6. 120.]

最新更新