使用 NumPy 计算 nums 和 bins 的直方图
在 Python 中,为了创建直方图,我们有 numpy、matplotlib 和 seaborn 库。在 Numpy 中,我们有函数 histogram() 来处理直方图数据。histogram() 函数的输入参数是 nums 和 bins。nums 用于创建数值数据。
在继续示例之前,让我们首先了解什么是直方图。
什么是直方图
直方图是数据集分布的图形表示。它以一系列条形图的形式表示数据,其中每个条形图表示的数据值范围和条形图的高度表示范围内定义的数据值的频率。
这些主要用于表示数值数据的分布,如班级成绩、人口分布或员工收入分布等。
使用 Python 中的 Numpy 计算直方图
在直方图中,x 轴表示数据值的范围,分为间隔,y 轴表示每个箱内数据值范围的频率。可以通过将每个 bin 的频率除以总数据值来对直方图进行归一化,从而得到相对频率直方图,其中 y 轴表示每个 bin 的数据值。
语法
以下是使用数字为给定数据范围创建直方图的语法。
numpy.histogram(nums, bins, range, normed, weights, density)
其中,
nums 是输入的数值数据。
bins 是图形中表示数据的条形数。
range定义给定数据范围内的值的范围直方图。
normed 支持密度参数。
weights 是可选参数,用于对每个数据值进行加权。
Density 是将直方图数据标准化以形成概率密度的参数。
示例
在下面的示例中,我们通过定义数字以及直方图中需要多少个箱来创建学生的分数。histogram() 函数用于通过将数字和箱作为输入参数传递来生成直方图。
import numpy as np import matplotlib.pyplot as plt nums = np.random.normal(50,20,size = 50) hist = np.histogram(nums) print("给定数据的直方图:",hist) plt.hist(hist) plt.show()
输出
以下是使用 nums 对照 bins 的 histogram() 函数的输出。
给定数据的直方图:(array([ 1, 0, 0, 6, 7, 9, 8, 12, 4, 3]), array([-11.52097959, -1.64606252, 8.22885455, 18.10377162, 27.97868869, 37.85360576, 47.72852282, 57.60343989, 67.47835696, 77.35327403, 87.2281911 ]))
示例
让我们看另一个示例,以了解使用数字对箱的直方图()的工作原理。
import numpy as np import matplotlib.pyplot as plt nums = np.random.normal(200,20,size = 100) hist = np.histogram(nums) print("给定数据的直方图:",hist) plt.hist(hist) plt.show()
输出
以下是使用 nums 对照 bins 的 histogram() 函数的输出。
给定数据的直方图:(array([ 2, 1, 8, 17, 18, 24, 13, 11, 3, 3]), array([146.40363927, 156.62124167, 166.83884407, 177.05644647, 187.27404887, 197.49165127, 207.70925367, 217.92685607, 228.14445847, 238.36206086, 248.57966326]))
示例
让我们看另一个使用 numpy 库的 histogram() 函数的示例,将数字用于 bins。
import numpy as np import matplotlib.pyplot as plt nums = np.random.normal(400,30,size = 30) hist = np.histogram(nums) print("给定数据的直方图:",hist) plt.hist(hist) plt.show()
输出
以下是使用 nums 对照 bins 的 histogram() 函数的输出。
给定数据的直方图:(array([2, 1, 3, 5, 5, 4, 6, 0, 2, 2]), array([340.28832063, 352.48676341, 364.68520618, 376.88364896, 389.08209174, 401.28053451, 413.47897729, 425.67742007, 437.87586284, 450.07430562, 462.2727484 ]))