Python 检查浮点值是否在numpy数组中
我试图找出一个值是否在numpy数组中。该数组使用linspace方法生成,并获取float64类型。我的值是浮动类型。由于结果“数组中的值”检查总是返回false。找出浮点值是否在float64数组中的最有效方法是什么Python 检查浮点值是否在numpy数组中,python,numpy,floating-point,Python,Numpy,Floating Point,我试图找出一个值是否在numpy数组中。该数组使用linspace方法生成,并获取float64类型。我的值是浮动类型。由于结果“数组中的值”检查总是返回false。找出浮点值是否在float64数组中的最有效方法是什么 import numpy as np def find_nearest(array, value): array = np.asarray(array) if value not in array: array = np.insert(arra
import numpy as np
def find_nearest(array, value):
array = np.asarray(array)
if value not in array:
array = np.insert(array, np.searchsorted(array, value), value)
return array
array = np.linspace(0,1,21)
print(array)
value = 0.3
print(find_nearest(array, value))
谢谢,我刚想出来。下面的代码按照您的建议与iClose配合使用:
import numpy as np
def find_nearest(array, value):
array = np.asarray(array)
if not np.any(np.isclose(array, value)):
array = np.insert(array, np.searchsorted(array, value), value)
return array
array = np.linspace(0,1,21)
print(array)
value = 0.3
print(find_nearest(array, value))
当您打印数组的值时
for value in array:
print(value)
#op
0.0
0.05
0.1
0.15000000000000002
0.2
0.25
0.30000000000000004
0.35000000000000003
0.4
0.45
0.5
0.55
0.6000000000000001
0.65
0.7000000000000001
0.75
0.8
0.8500000000000001
0.9
0.9500000000000001
1.0
现在您试图用0.300000000004检查0.3,这就是它返回的原因
如果始终为False,则要么将数组值四舍五入到小数点后的某个位置,要么将数组值四舍五入到小数点后的某个位置。由于印象的原因,使用浮点数进行精确匹配是不确定的。有一个
isclose
函数,用于检查公差范围内的匹配。