我有一个2D numpy数组和一列索引列表,我希望计算numpy数组中相应的一维向量的总和。这可以通过for循环或通过列表理解来轻松完成,但我想知道是否可以对其进行矢量化。使用类似的代码,我可以从矢量化中获得大约40倍的加速比。向量化各种索引的numpy数组调用
这里的示例代码:
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]
(编辑):请注意,指数不(X,Y)坐标array_2d,代替指数为[0] = [1,2]表示在第一和第二array_2d中的向量(行)。索引中每个列表的元素数目可以变化。
这就是我希望能够做到:
vectorized_soln = np.sum(array_2d[indices[:]], axis=-1)
有谁知道是否有实现这一目标的任何方式?
“indices”的最后一个元素应该是“[2]”吗?其他元素的长度为2. –
我编辑了这篇文章,并解释了一些索引代表的内容。最初是的,索引中的元素可以具有可变大小,但是对array_2d中的相应向量执行的操作应该同样适用(如总和或平均值等),并输出单个向量。 – irozada