我有多个计数索引,如下例所示:
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.]