问题给出了以下两个列表。
import numpy as np
import random as rnd
num = 100000
a = list(range(num))
b = [rnd.randint(0, num) for r in range(num)]
Run Code Online (Sandbox Code Playgroud)
在两个尺寸巨大的列表之间(假设引用列表为),使用 list( ) 理解方法创建a一个指示相同元素位于相对 array( ) 中位置的列表。batob
atob = [np.abs(np.subtract(b, i)).argmin() for i in a]
print(f"index a to b: {atob}")
Run Code Online (Sandbox Code Playgroud)
当列表较小时,不需要很长时间。然而,我意识到获取列表的过程atob相当耗时。
有没有办法更快地获取列表atob?还是目前没有办法?
(回答后编辑。此修订的目的是为了将来的读者。)非常感谢您的回复!根据答案进行代码分析。
结果的比较是用 进行的num = 20。
import numpy as np
import random as rnd
import time
# set lists
num = 20
a = list(range(num)) …Run Code Online (Sandbox Code Playgroud)