numpy中数组中的元素

时间:2015-09-22 19:03:18

标签: python numpy

我无法弄清楚为什么(a中的b)在以下代码中返回为False。当我打印a和b时,很明显a实际上是b。

import numpy as np
a=np.arange(-.5,.5,0.04)
b = 0.46

print 'a=',a
print 'b=',b
print 'b in a:',(b in a)

有人可以建议成功进行此检查吗?

2 个答案:

答案 0 :(得分:4)

浮点数很少精确......换句话说,你可能只是一个非常小的数字(大约1e-16) - 但numpy选择代表数字与字符串相同,因为大部分时间,额外的精度只是噪音,会掩盖您实际想要看到的数据。

问题的一个可能解决方案是将numpy.isclosendarray.any结合使用:

np.isclose(a, b).any()

答案 1 :(得分:1)

欢迎来到花车......看看这个:

import numpy as np
a=np.arange(-.5,.5,0.04)
b = 0.46

print('a in b:',(b in a))

False

print('a in b:',(-0.5 in a))

True

print('a in b:',(-0.46 in a))

True

print('a in b:',(-0.42 in a))

False

当您从数组的开头慢慢移开时,浮点数在长有效数字时不再相同,但计算机仍然只显示最多2个小数点。

与说0.4400000000000001 == 0.44相同,如果你看起来像是2位小数点,但是计算机当然不会认出它。