我需要检查给定的浮点是否在给定的公差范围内接近于浮点数组中的任何浮点。
import numpy as np
# My float
a = 0.27
# The tolerance
t = 0.01
# Array of floats
arr_f = np.arange(0.05, 0.75, 0.008)
有什么简单的方法可以做到这一点吗?类似于if a in arr_f:
但允许在差异中有一定的容忍度?
添加
我所说的“允许容忍”是指以下含义:
for i in arr_f:
if abs(a - i) <= t:
print 'float a is in arr_f within tolerance t'
break
如果您只对
True
/False
结果感兴趣,那么这应该可以工作:解释:
abs(arr_f - a) < t
返回一个调用any()
的布尔数组,以确定其值中的任何是否为True
。编辑将此方法与{a1}中建议的方法进行比较,可以发现此方法稍快:
另一种也返回相关索引的解决方案如下:
这意味着位于
arr_f
的索引27和28中的值在所需范围内,并且实际上:使用此方法还可以生成
True
/False
结果:用^{} 怎么样?
np.isclose
按元素顺序比较两个对象,以查看值是否在给定的公差范围内(此处由关键字参数atol
指定,该参数是两个元素之间的绝对差)。函数返回一个布尔数组。相关问题 更多 >
编程相关推荐