Python 是否有参数设置numpy.linspace的精度?

Python 是否有参数设置numpy.linspace的精度?,python,numpy,Python,Numpy,我试图检查numpy数组是否包含特定值: >>> x = np.linspace(-5,5,101) >>> x array([-5. , -4.9, -4.8, -4.7, -4.6, -4.5, -4.4, -4.3, -4.2, -4.1, -4. , -3.9, -3.8, -3.7, -3.6, -3.5, -3.4, -3.3, -3.2, -3.1, -3. , -2.9, -2.8, -2.7, -2.6, -2.5

我试图检查
numpy
数组是否包含特定值:

>>> x = np.linspace(-5,5,101)
>>> x
array([-5. , -4.9, -4.8, -4.7, -4.6, -4.5, -4.4, -4.3, -4.2, -4.1, -4. ,
       -3.9, -3.8, -3.7, -3.6, -3.5, -3.4, -3.3, -3.2, -3.1, -3. , -2.9,
       -2.8, -2.7, -2.6, -2.5, -2.4, -2.3, -2.2, -2.1, -2. , -1.9, -1.8,
       -1.7, -1.6, -1.5, -1.4, -1.3, -1.2, -1.1, -1. , -0.9, -0.8, -0.7,
       -0.6, -0.5, -0.4, -0.3, -0.2, -0.1,  0. ,  0.1,  0.2,  0.3,  0.4,
        0.5,  0.6,  0.7,  0.8,  0.9,  1. ,  1.1,  1.2,  1.3,  1.4,  1.5,
        1.6,  1.7,  1.8,  1.9,  2. ,  2.1,  2.2,  2.3,  2.4,  2.5,  2.6,
        2.7,  2.8,  2.9,  3. ,  3.1,  3.2,  3.3,  3.4,  3.5,  3.6,  3.7,
        3.8,  3.9,  4. ,  4.1,  4.2,  4.3,  4.4,  4.5,  4.6,  4.7,  4.8,
        4.9,  5. ])
>>> -5. in x
True
>>> a = 0.2
>>> a
0.2
>>> a in x
False
我给变量
a
分配了一个常数。
a
的精度似乎与
np.linspace()
生成的
numpy
数组中的元素不兼容


我已经搜索了,但没有找到任何相关信息。

这不是
np.linspace
的精度问题,而是生成的数组中元素的类型问题

np.linspace
生成元素,从概念上讲,这些元素平均划分它们之间的输入范围。然而,这些元素随后被存储为精度有限的浮点数,这使得生成过程本身似乎缺乏精度

通过将
dtype
参数传递给
np.linspace
,可以指定用于存储其结果的浮点类型的精度,这可以提高生成过程的明显精度

然而。相反,请将
np.isclose
np.ndarray.any
或某些等效项结合使用:

>>> floats_64 = np.linspace(-5, 5, 101, dtype='float64')
>>> floats_128 = np.linspace(-5, 5, 101, dtype='float128')
>>> print(0.2 in floats_64)
False
>>> print(floats_64[52])
0.20000000000000018
>>> print(np.isclose(0.2, floats_64).any())  # check if any element in floats_64 is close to 0.2
True
>>> print(0.2 in floats_128)
False
>>> print(floats_128[52])
0.20000000000000017764
>>> print(np.isclose(0.2, floats_128).any())  # check if any element in floats_128 is close to 0.2
True