我想了解np.histogram的工作原理,所以我运行了以下代码:
import numpy as np
a = np.array([[1,2,3,4],[1,2,3,4],[1,5,7,3]])
imhist , bins = np.histogram(a.flatten())
问题是我应该得到显示[0,3,2,3,2,1,0,1]的直方图,而我却得到[3,2,0,3,0,2, 1,0,0,1]
出了什么问题?
答案 0 :(得分:0)
np.histogram默认具有10个bin。垃圾箱确定如何对数据进行分组。在您的情况下,您有12个数据值和10个仓位,这就是为什么您的仓位不是整数并且会调整数据的原因。
尝试使用:
np.histogram(a.flatten(), bins=12)
代替:)
我希望这会有所帮助!
答案 1 :(得分:0)
第一个问题是bins=10
的默认值是在对np.histogram
的调用中传递的,您可以通过传递所需的bin来解决此问题:
import numpy as np
a = np.array([[1,2,3,4],[1,2,3,4],[1,5,7,3]])
imhist , bins = np.histogram(a.flatten(), bins=np.arange(9))
print(imhist, bins)
>>> (array([0, 3, 2, 3, 2, 1, 0, 1], dtype=int32),
array([0, 1, 2, 3, 4, 5, 6, 7, 8]))
在这种情况下,由于您还需要提供最右边的边,所以bin从0变到8,因此,如果您的最后一个值为7,则最右边的bin边将是8。