提问人:Danny 提问时间:4/24/2023 更新时间:4/24/2023 访问量:57
检查哪些 2D 坐标位于 Numpy 浮点数组中
Check which 2D coordinates are in Numpy array of floats
问:
我有两个 (x,y) 坐标的 Numpy 数组。我想找到第一个数组中不在第二个数组中的所有点。坐标是浮点数。它们应该只有几位数字(例如 1.25,但不是 1.123456)。但它们是计算的结果,因此浮点不精确是一个因素。
对这个问题的评论指出,这里可以找到适合浮点数的答案。但是在检查了答案之后,我不清楚其中任何一个都解释了浮点的不精确性。
没错,我的解决方案是这样的:
import numpy as np
a1 = np.array([[1.2, 2.3], [1.0, 1.1]])
a2 = np.array([[1.0, 1.1], [5.2, 2.2]])
a1_not_a2 = []
a2_set = set(tuple(point) for point in a2.round(decimals=5).tolist())
for point in a1.round(decimals=5).tolist():
if tuple(point) not in a2_set:
a1_not_a2.append(point)
但我不确定我的解决方案是否总是有效,而且速度很慢。我有两个问题:
(1) 比较浮点数后是否保证产生正确的输出?round(decimals=5)
(2) 有没有更好的方法来获得我的结果?我的数组很大,所以使用嵌套的 for 循环很慢。np.allclose
答: 暂无答案
评论