我找不到性能增强问题的解决方案。如何迭代切片列表?
我有一维数组,我想计算在滑动指数窗总和,这里有一个例子代码:
import numpy as np
input = np.linspace(1, 100, 100)
list_of_indices = [[0, 10], [5, 15], [45, 50]] #just an example
output = np.array([input[idx[0]: idx[1]].sum() for idx in list_of_indices])
的output
阵列的计算相比,numpy的向量化内置极为缓慢在功能上。 在现实生活中我list_of_indices
包含数万[lower bound, upper bound]
双,该环形绝对是一款高性能的python脚本的瓶颈。
如何解决这个问题,使用numpy的内部功能:像面具,聪明np.einsum
,或者跟其他的东西吗? 由于我在HPC领域工作,我也担心内存消耗。
没有人有在尊重的性能要求这一问题的答案吗?
您好,欢迎来到SO!请避免在问题中添加与问题无关的信息。另外请考虑阅读解释如何提出好问题的[帮助]。特别是,这个问题似乎更适合于CodeReview站点,而不是SO。 – BartoszKP 2014-12-06 12:59:06
这是很容易误用numpy和膨胀你的脚本的内存足迹与巨大的数组。至少现在写的方式,我发现与SO有关的问题。 – 2014-12-06 18:17:03
即使在技术上关于代码加速,大多数numpy'vectoriztion'问题都是在SO中回答的。 – hpaulj 2014-12-07 08:29:38