Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查浮点值是否在numpy数组中_Python_Numpy_Floating Point - Fatal编程技术网

Python 检查浮点值是否在numpy数组中

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

我试图找出一个值是否在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(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
函数,用于检查公差范围内的匹配。