使用 Python 中的 NumPy 计算一组数据的直方图
numpypythonserver side programmingprogramming
直方图是数据集分布的图形表示。它以一系列条形的形式表示数据,其中每个条形所表示的数据值范围和条形的高度表示范围内定义的数据值的频率。
这些主要用于表示数值数据的分布,如班级成绩、人口分布或员工收入分布等。
在直方图中,x 轴表示数据值的范围,分为间隔,y 轴表示每个箱内数据值范围的频率。可以通过将每个箱的频率除以总数据值来对直方图进行归一化,从而得到相对频率直方图,其中 y 轴表示每个箱的数据值。
使用 Python Numpy 计算直方图
在 Python 中,我们使用 numpy、matplotlib 和 seaborn 库来创建直方图。在 Numpy 中,我们有一个名为 histogram() 的函数来处理直方图数据。
语法
以下是为给定的数据范围创建直方图的语法。
numpy.histogram(arr, bins, range, normed, weights, density)
其中,
arr 是输入数组
bins 是图形中表示数据的条形数
range定义直方图中值的范围
normed有利于密度参数
weights 是可选参数,用于对每个数据值进行加权
Density 是将直方图数据标准化以形成概率密度的参数。
直方图函数的输出将是一个包含直方图计数和箱边界的元组。
示例
在下面的示例中,我们使用 Numpy histogram() 函数创建直方图。在这里,我们传递一个数组作为输入参数,将箱定义为 10,因此将使用 10 个箱创建直方图,其余参数可以保留为无。
import numpy as np arr = np.array([10,20,25,40,35,23]) hist = np.histogram(arr,bins = 10) print("The histogram created:",hist)
输出
The histogram created: (array([1, 0, 0, 1, 1, 1, 0, 0, 1, 1], dtype=int64), array([10., 13., 16., 19., 22., 25., 28., 31., 34., 37., 40.]))
示例
让我们看另一个例子来了解 numpy 库的 histogram() 函数。
import numpy as np arr = np.array([[20,20,25],[40,35,23],[34,22,1]]) hist = np.histogram(arr,bins = 20) print("The histogram created:",hist)
输出
The histogram created: (array([1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1], dtype=int64), array([ 1. , 2.95, 4.9 , 6.85, 8.8 , 10.75, 12.7 , 14.65, 16.6 , 18.55, 20.5 , 22.45, 24.4 , 26.35, 28.3 , 30.25, 32.2 , 34.15, 36.1 , 38.05, 40. ]))
示例
在此示例中,我们通过指定箱体以及要使用的数据范围来创建直方图。以下代码可作为参考。
import numpy as np arr = np.array([[20,20,25],[40,35,23],[34,22,1]]) hist = np.histogram(arr,bins = 20, range = (1,10)) print("The histogram created:", hist)
输出
The histogram created: (array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0], dtype=int64), array([ 1. , 1.45, 1.9 , 2.35, 2.8 , 3.25, 3.7 ,4.15, 4.6 , 5.05, 5.5 , 5.95, 6.4 , 6.85, 7.3 , 7.75, 8.2 , 8.65, 9.1 , 9.55, 10. ]))