Numpy:将浮点数与阈值

时间:2017-03-11 16:44:01

标签: python numpy floating-point

我在这里找到了如何比较浮点数:

Compare `float` and `float64` in python

Working with floating point NumPy arrays for comparison and related operations

以及其他类似问题。

但我无法找到正确比较浮点数与阈值(更大或更小)的最佳方法。

示例:我们要检查float matrix中的元素是否小于浮点阈值。

eps = 0.1
xx = np.array([[1,2,3], [4,5,6], [7,8,9]])
yy = np.array([[1.1,2.1,3.1], [4.1,5.1,6.1], [7.1,8.2,9.3]])
dif = np.absolute(xx - yy)
print dif
print dif < eps

打印:

[[ 0.1  0.1  0.1]
 [ 0.1  0.1  0.1]
 [ 0.1  0.2  0.3]]
[[False False False]
 [ True  True  True]
 [ True False False]]

我找到的唯一解决方案是创建一个矢量化函数,并将矩阵的每个元素与阈值进行比较:首先确定它们不相等,然后与<>进行比较。 感谢@MarkRansom。

2 个答案:

答案 0 :(得分:0)

在大多数实际情况下,由于您在进行计算时收集的错误很少,因此无法进行精确比较。

如果你想做适当的数字,你将不得不进行错误估计以及所有结果,这是非常繁琐的。

(有一个名为flint的库python interface,但我没有使用它,所以无法保证它。它的目的是为你做所有结果的携带错误界限(比估计更严格) 。)

在任何情况下,您都必须将可能结果的列表从更大,相等,更少更改为更大,更大,更难以区分,可能更少,更少

答案 1 :(得分:0)

请注意,a ≤ b等于not a > b