使用以下命令从数组构建直方图:np.histogram

时间:2019-03-17 09:25:21

标签: python

我想了解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]

出了什么问题?

2 个答案:

答案 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。