我有n个物品。对于每一对,我都必须进行测试(对/错)。该测试是对称的:test(a,b)= test(b,a)。我正在寻找运行这些测试的最快解决方案。
每个项目都有一个ID和一个属性。在这种情况下,该属性是多边形,我正在寻找附近的其他多边形。此测试是对称的:如果A触摸B,则B触摸A。 测试两次是多余的。因此,我编写了这段代码以仅测试n(n-1)/ 2次:
from collections import defaultdict
dict_neigh = defaultdict(list)
# initially my data is in a dataframe, but I though an array would be faster(?)
# the property of the item:
data=df_gps.coordinates.values
# the index of the item:
ind=df_gps.index.values
end=len(data)
for x in range(0,end-1):
for y in range(x +1,end):
# The symmetric test:
if Polygon(data[x]).touches(Polygon(data[y])):
# Store the result in a dic
dict_neigh[ind[x]].append(ind[y])
dict_neigh[ind[y]].append(ind[x])
我想知道是否有人看到一种提高这种(某种)测试速度的方法。