Numpy Float32值的不同取决于是在数组内启动还是作为独立的float32:
>>> numpy.array([75.09], dtype="float32")
array([ 75.08999634], dtype=float32)
>>> numpy.float32(75.09)
75.089996
我需要能够在数组中搜索float32值。由于最后两位额外数字,目前找不到值。我也尝试过:
>>> numpy.array([75.09], dtype="float32").round(decimals=6)
array([ 75.08999634], dtype=float32)
和
>>> numpy.around(numpy.array([75.09], dtype="float32"), decimals=6)
array([ 75.08999634], dtype=float32)
但是你可以看到输出仍然包含最后两位数字。
答案 0 :(得分:3)
这些数字(很可能)是相同的,只是对象被格式化为字符串的问题。
>>> numpy.array([75.09], dtype="float32")[0] == numpy.float32(75.09)
True
问题(你可能已经知道)是75.09似乎需要很高的精度,甚至可能是无限的(我没有做数学,更多关于它here)。
如果你想拥有一致的文本输出,只需使用你自己的字符串格式。
>>> a = numpy.array([75.09], dtype="float32")
>>> b = numpy.float32(75.09)
>>> print 'a: [', ','.join('{:.6f}'.format(ai) for ai in a), '] b:','{:.6f}'.format(b)
a: [ 75.089996 ] b: 75.089996
>>> print 'a: [', ','.join('{:.8f}'.format(ai) for ai in a), '] b:','{:.8f}'.format(b)
a: [ 75.08999634 ] b: 75.08999634
答案 1 :(得分:0)
数字的显示是不同的,因为它们被打印为NumPy数组(1)和浮点数(2)。尝试打印第一个数组成员numpy.array([75.09], dtype="float32")[0]
。
关于浮点数的有限精度的评论也要考虑到:-)几乎从来没有在浮点数中找到相等。