【发布时间】:2018-09-26 13:55:18
【问题描述】:
我有两组 numpy 数组:x1,y1 和 x2,y2。我想在 y2 数组中保留所有具有匹配 y 坐标的 x1 和 y1 值。我们可以假设所有 y2 值都存在于 y1 数组中。
例如
x1 = [5,6,7,8,9,0]
y1 = [1,2,3,4,5,6]
x2 = [5,4,3,2]
y2 = [2,3,4,5]
#as y2 values 2,3,4,5 are present in y1, I want the output to be:
x1 = [6,7,8,9] y1 = [2,3,4,5]
因此,所有输出数组的大小相同,并且具有相同的 y 坐标。
我可以使用下面的代码来做到这一点。但是,我要使用的数组大小> 100k,这使得这非常缓慢且效率低下。有一个更好的方法吗?速度和效率是我的主要目标,如果我能学到更好的方法,那就是加分项!提前致谢!!
x1 = [5,6,7,8,9,0]
y1 = [1,2,3,4,5,6]
x2 = [11,12,13,14]
y2 = [2,3,4,5]
max1 = max(y2)
min1 = min(y2)
for i, y in enumerate(y1):
if (y >= min1) and (y <= max1):
print (x1[i],y)
【问题讨论】:
-
当您谈论“匹配”y 坐标时,您的代码只是检查
min(y2) <= y1 <= max(y2)是否比实际匹配的代码做得更好。要获得的效率可能在其他地方。即更好地输入/输出数据 -
匹配是什么意思? y1 的预期输出可以简单地通过
print(set(y2).intersection(set(y1)))来实现。无法理解 x1 输出 -
感谢您的评论。我的小例子可能会误导我。这是我输入的粗略代码,因为我想表明我可以遍历数组中的每个值(我不想这样做,因为我想使用的数组很大)。我希望有一种解决方案能够以有效的方式返回数组中的所有值,这些值在我的参考数组中具有匹配的值。
标签: python arrays performance bigdata