NumPy histogram() 函数用于计算一组数据的直方图。使用该函数的语法如下:

语法

numpy.histogram(a, bins=10, range=None, normed=None, weights=None, density=None) 

参数

a必填。 指定输入数据,直方图是在展平的数组上计算的。
bins可选。 指定bin的数量。如果 bins 是 int,则它定义给定范围内等宽 bin 的数量(默认为 10)。如果 bins 是一个序列,它定义一个单调递增的 bin 边缘数组,包括最右边的边缘,允许不均匀的 bin 宽度。
range可选。 指定 bin 的下限和上限范围。如果未提供,范围只是 (a.min(), a.max())。超出范围的值将被忽略。范围的第一个元素必须小于或等于第二个元素。
normed可选。 等价于密度论证。自版本 1.6.0 起已弃用。
weight可选。 指定一个权重数组,其形状与a相同。
density可选。 如果设置为 False,结果将包含每个 bin 中的样本数。如果为 True,则结果是 bin 处概率密度函数的值。

返回值

返回直方图。

示例:创建直方图

在下面的示例中,histogram() 函数用于创建直方图的值。

import numpy as np

Arr = np.arange(101)

#创建10个bin-每个bin包含10个元素
#最后一个bin包含11个元素。例如
#[0,10)bin将包含0, 1, ..., 9。
HistArr = np.histogram(Arr)

print(HistArr) 

上述代码的输出将是:

(array([10, 10, 10, 10, 10, 10, 10, 10, 10, 11]), 
 array([  0.,  10.,  20.,  30.,  40.,  50.,  60.,  70.,  80.,  90., 100.])) 

示例:带有 bin 和范围参数的直方图

bins 参数用于指定直方图中的 bin 数量,range 参数用于指定用于创建直方图的数据范围。

import numpy as np

Arr = np.arange(101)

#为范围[0, 40]创建5个bin-每个bin包含
#8个元素,最后一个bin包含9个元素
HistArr = np.histogram(Arr, bins=5, range=(0,40))

print(HistArr) 

上述代码的输出将是:

(array([8, 8, 8, 8, 9]), 
 array([ 0.,  8., 16., 24., 32., 40.])) 

示例:带有 bin 和密度参数的直方图

在下面的示例中,bins 参数作为带有密度参数的序列提供。该序列定义了 bin 边缘,并将密度设置为 True 以获取 bin 处的概率密度函数。

import numpy as np

Arr = np.arange(101)
b = np.array([0,10,20,30,40])
HistArr1 = np.histogram(Arr, bins=b, density=False)
HistArr2 = np.histogram(Arr, bins=b, density=True)

print("HistArr1 is:")
print(HistArr1)
print("\nHistArr2 is:")
print(HistArr2) 

上述代码的输出为:

HistArr1 is:
(array([10, 10, 10, 11]), 
 array([ 0, 10, 20, 30, 40]))

HistArr2 is:
(array([0.02439024, 0.02439024, 0.02439024, 0.02682927]), 
 array([ 0, 10, 20, 30, 40])) 

示例:使用 matplotlib 绘制直方图

Matplotlib 是 Python 编程语言的绘图库。 matplotlib 的 hist() 函数与 numpy 的 histogram() 函数类似,可以与 numpy 对象一起使用以图形方式创建直方图,如下例所示。

import matplotlib.pyplot as plt
import numpy as np

Arr = np.array([45,64,5,22,55,89,59,35,78,42,34,15])
b = np.array([0,20,40,60,80,100])

plt.hist(Arr, bins = b, edgecolor='blue') 
plt.title("Histogram") 
plt.show() 

上述代码的输出将是:

NumPy 直方图