我想匹配两个数组中存在的数字(长度不相等),如果匹配则将它们输出到另一个数组。数字是浮点数。
目前我在Python中有一个工作程序,但是当我为大型数据集运行它时它很慢。我所做的是两个嵌套for循环。
第一个嵌套的for循环遍历array1并检查array2中的任何数字是否在数组1中。如果匹配,我将其写入名为arrayMatch1的数组。
然后我检查array2并查看是否与arrayMatch1匹配。并将最终结果输出到arrayFinal。
arrayFinal将包含array1,array2中的所有数字。
我的问题: 两个嵌套的for循环给我一个复杂的O(n ^ 2)。此方法适用于数组长度为25000的数据集,但如果更大则减慢速度。如何才能提高效率。数字是浮点数,并且始终采用这种格式######。###
我想加快我的程序,但由于简单,继续使用Python。有没有更好的方法来找到两个数组之间的匹配?
答案 0 :(得分:1)
为什么不找到两个名单的部分?
a = [1,2,3,4.3,5.7,9,11,15]
b = [4.3,5.7,6.3,7.9,8.1]
def intersect(a, b):
return list(set(a) & set(b))
print intersect(a, b)
输出:
[5.7,4.3]
答案 1 :(得分:0)
所以你基本上要做的就是找到2个列表的交集(逻辑上正确的术语)。
首先,您需要消除列表本身的重复形式,set
是很好的方法,然后您可以&
这些列表,您将会很高兴。
a = [23.3213,23.123,43.213,12.234] #List First
b = [12.234,23.345,34.224] #List Second
def intersect(a, b):
return list(set(a) & set(b))
print intersect(a, b)