【发布时间】:2016-12-09 07:44:12
【问题描述】:
我希望对嵌套循环进行矢量化处理,该循环将适用于 300,000 个列表的列表,每个列表都包含 3 个值。嵌套循环将每个列表的值与其他列表中的对应值进行比较,并且只会附加对应值最大差异为 0.1 的列表索引。因此,包含 [0.234, 0.456, 0.567] 的列表和包含 [0.246, 0.479, 0.580] 的列表将属于此类别,因为它们的对应值(即 0.234 和 0.246;0.456 和 0.479;0.567 和 0.580)存在差异它们之间小于 0.1。
我目前使用以下嵌套循环来执行此操作,但目前大约需要 58 小时才能完成(总共 90 万亿次迭代);
import numpy as np
variable = np.random.random((300000,3)).tolist()
out1=list()
out2=list()
for i in range(0:300000):
for j in range(0:300000):
if ((i<j) and ((abs(variable[i][0]-variable[j][0]))<0.1) and ((abs(variable[i][1]-variable[j] [1]))<0.1) and ((abs(variable[i][2]-variable[j][2]))<0.1)):
out1.append(i)
out2.append(j)
【问题讨论】:
-
你的
variable是随机的,只是为了举例,还是你真的在模拟什么? -
是的,这只是为了举例 - 实际上我有一个列表列表,通过模拟生成,其中的数据实际上落在我提到的阈值范围内。
标签: python numpy vectorization