我有一个 2D numpy 数组和一个索引列表列表,我希望从 numpy 数组中计算相应的 1D 向量的总和。这可以通过 for 循环或列表理解轻松完成,但我想知道是否可以对其进行矢量化。使用类似的代码,我从矢量化中获得了大约 40 倍的加速。
这是示例代码:
import numpy as np
indices = [[1,2],[1,3],[2,0,3],[1]]
array_2d = np.array([[0.5, 1.5],[1.5,2.5],[2.5,3.5],[3.5,4.5]])
soln = [np.sum(array_2d[x], axis=-1) for x in indices]
(编辑):请注意,对于 array_2d,索引不是 (x,y) 坐标,而是 indices[0] = [1,2] 表示 array_2d 中的第一个和第二个向量(行)。索引中每个列表的元素数量是可变的。
这是我希望能够做到的:
vectorized_soln = np.sum(array_2d[indices[:]], axis=-1)
有谁知道是否有任何方法可以实现这一目标?