此特定清单理解的数字版本

时间:2019-04-30 07:49:45

标签: python list performance numpy list-comprehension

所以几天前,我需要在此线程中进行特定的列表理解:Selecting a subset of integers given two lists of end points

我得到了令人满意的答案。现在快进,我不知何故需要提高性能,因为我正在使用的方法涉及对其进行循环,并且在每次迭代中,这些端点数组的长度至少为几千。

所以我的问题是numpy软件包中是否有任何功能可以完成工作,但速度更快?我研究了numpy的linspace,重复,排列和内容,找不到任何突破。而且,如果有一种方法可以更快地完成工作,那么你们能告诉我方法吗?

提前谢谢你们。

1 个答案:

答案 0 :(得分:1)

如果您仍然感兴趣,则可以摆脱一个for循环,并将numpy.arange()与列表理解和numpy.hstack()结合使用以获得所需的内容。话虽如此,我们仍然需要至少一个for循环才能完成此操作(因为rangearange都不接受一系列端点)

t1 = [0,13,22]
t2 = [4,14,25]
np.hstack([np.arange(r[0], r[1]+1)  for r in zip(t1, t2)])

# outputs
array([ 0,  1,  2,  3,  4, 13, 14, 22, 23, 24, 25])

但是,我不知道对于您的特定情况,该性能将提高多少。