按索引累加数组元素 重复索引场景的高性能实现方案
按索引将数值数组元素累加到另一数组的高性能实现(支持重复索引场景)
如何按索引将一个数值数组的元素累加到另一个数组上?尤其是存在重复索引的场景,示例如下:
x 1 2 3 4 idx 0 1 0 y 5 6 7 ] x add idx;y NB. 计算逻辑:(1 + 5 + 7) , (2 + 6) , 3 , 4 13 8 3 4
其中x、idx、y所有变量都可能包含百万级元素,需要实现高性能的add动词。
解决方案
以下方案由Dan Bron提供:
cumIdx =: 1 : 0 : 'i z' =. y n =. ~. i x n}~ (n{x) + i u//. z ) (1 2 3 4) + cumIdx (0 1 0);(5 6 7) 13 8 3 4
内容的提问来源于stack exchange,提问作者Jacob Jacob
相关产品推荐
相关产品推荐

