Python matplotlib 历史计数不正确
Python matplotlib hist counts incorrect
如果我遇到此处所述的浮点精度问题,有人可以给我提示吗: 或者我在这里遗漏了什么??
import numpy
import matplotlib.pyplot as plt
frame = numpy.array([0.9, 0.99, 1, 1.9, 1.99, 2])
MyBins = numpy.linspace(0, 100, 1000, endpoint=False)
(counts, bins, bars) = plt.hist(frame, bins = MyBins)
Output counts:
0
... ...
8 0.0
9 2.0
10 1.0
... ...
18 1.0
19 1.0
20 1.0
0.9 和 0.99 的计数应为 2,1.9 和 1.99 的计数也应为 2。但是,1.9 被算作 1.8 值...如果这是一个浮动精度问题,我该怎么做才能解决它?
谢谢!
如果您以高精度打印数字,它们会变成类似:'0.1000000000000000055511151'
和 '1.8999999999999999111821580'
。所以是的,浮点精度可能是问题所在。移动您的 bin 边界可能是一个解决方案。
通常情况下,具有相同精度的浮点数应该比较相等并且表现符合预期。如果您的值和直方图使用不同的精度,您可能会得到这样的意外结果。您可能会尝试找出直方图使用的精度并将其用于您的值。
示例:
frame = numpy.array([0.9, 0.99, 1, 1.9, 1.99, 2], dtype=numpy.float32)
如果我遇到此处所述的浮点精度问题,有人可以给我提示吗:
import numpy
import matplotlib.pyplot as plt
frame = numpy.array([0.9, 0.99, 1, 1.9, 1.99, 2])
MyBins = numpy.linspace(0, 100, 1000, endpoint=False)
(counts, bins, bars) = plt.hist(frame, bins = MyBins)
Output counts:
0
... ...
8 0.0
9 2.0
10 1.0
... ...
18 1.0
19 1.0
20 1.0
0.9 和 0.99 的计数应为 2,1.9 和 1.99 的计数也应为 2。但是,1.9 被算作 1.8 值...如果这是一个浮动精度问题,我该怎么做才能解决它?
谢谢!
如果您以高精度打印数字,它们会变成类似:'0.1000000000000000055511151'
和 '1.8999999999999999111821580'
。所以是的,浮点精度可能是问题所在。移动您的 bin 边界可能是一个解决方案。
通常情况下,具有相同精度的浮点数应该比较相等并且表现符合预期。如果您的值和直方图使用不同的精度,您可能会得到这样的意外结果。您可能会尝试找出直方图使用的精度并将其用于您的值。
示例:
frame = numpy.array([0.9, 0.99, 1, 1.9, 1.99, 2], dtype=numpy.float32)