检查 Numpy 浮点数组中的 2D 坐标

问题描述 投票:0回答:0

我有两个 (x,y) 坐标的 Numpy 数组。我想找到第一个数组中不在第二个数组中的所有点。坐标是浮点数。它们应该只有很少的数字(例如 1.25,但不是 1.123456)。但它们是计算的结果,所以浮点不精确是一个因素。

this question的评论指出,在here中找到了适合浮点数的答案。但是在检查了答案之后,我不清楚它们中的任何一个是否会导致浮点不精确。

对我的解决方案是这样的:

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) 有没有更好的方法得到我的结果?我的数组很大,所以使用带有

np.allclose
的嵌套 for 循环很慢。

python numpy floating-point precision
© www.soinside.com 2019 - 2024. All rights reserved.