所以几天前,我需要在此线程中进行特定的列表理解:Selecting a subset of integers given two lists of end points
我得到了令人满意的答案。现在快进,我不知何故需要提高性能,因为我正在使用的方法涉及对其进行循环,并且在每次迭代中,这些端点数组的长度至少为几千。
所以我的问题是numpy软件包中是否有任何功能可以完成工作,但速度更快?我研究了numpy的linspace,重复,排列和内容,找不到任何突破。而且,如果有一种方法可以更快地完成工作,那么你们能告诉我方法吗?
提前谢谢你们。
答案 0 :(得分:1)
如果您仍然感兴趣,则可以摆脱一个for
循环,并将numpy.arange()
与列表理解和numpy.hstack()
结合使用以获得所需的内容。话虽如此,我们仍然需要至少一个for
循环才能完成此操作(因为range
和arange
都不接受一系列端点)
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])
但是,我不知道对于您的特定情况,该性能将提高多少。