【发布时间】:2012-08-01 18:13:10
【问题描述】:
我正在尝试使用和加速花式索引来“加入”两个数组并在结果轴之一上求和。
类似这样的:
$ ipython
In [1]: import numpy as np
In [2]: ne, ds = 12, 6
In [3]: i = np.random.randn(ne, ds).astype('float32')
In [4]: t = np.random.randint(0, ds, size=(1e5, ne)).astype('uint8')
In [5]: %timeit i[np.arange(ne), t].sum(-1)
10 loops, best of 3: 44 ms per loop
有没有一种简单的方法可以加速In [5] 中的语句?我应该使用 OpenMP 和 scipy.weave 或 Cython 的 prange 之类的吗?
【问题讨论】:
-
另一个相关问题是我如何使用
pandas做同样的事情? -
Numpy 以 C 速度执行此操作,因此您可能无法通过 weave 加快速度。
标签: python optimization numpy scipy cython