根据位置向量汇总元素

时间:2019-02-13 12:23:21

标签: python numpy vectorization

我正在尝试对一个非常简单的操作进行矢量化处理,但是似乎无法弄清楚该怎么做。

给定一个非常大的数值向量(超过1M个位置)和另一个具有给定位置位置的大小为n的数组,我想返回一个大小为n的向量,其元素为第一个向量的平均值根据第二个

a = np.array([1,2,3,4,5,6,7])
b = np.array([[0,1],[2],[3,5],[4,6]])

c = [1.5,3,5,6]

我需要重复多次此操作,因此性能是一个问题。

香草python解决方案:

import numpy as np
import time

a = np.array([1,2,3,4,5,6,7])
b = np.array([[0,1],[2],[3,5],[4,6]])

begin = time.time()

for i in range(100000):

    c = []

    for d in b:
        c.append(np.mean(a[d]))

print(time.time() - begin, c)
# 3.7529971599578857 [1.5, 3.0, 5.0, 6.0]

1 个答案:

答案 0 :(得分:1)

我不确定这是否一定会更快,但您也可以尝试:

$('#foo-1')