Python 中的 numpy.histogram()

2025年3月17日 | 阅读 3 分钟

Python 的 numpy 模块提供了一个名为 numpy.histogram() 的函数。此函数表示与一组值范围进行比较的数值的频率。此函数类似于 matplotlib.pyplothist() 函数。

简单来说,此函数用于计算一组数据的直方图。

语法

参数

x: array_like

此参数定义了计算直方图的扁平化数组。

bins:int 或序列的 str 或标量(可选)

如果此参数定义为整数,则在给定范围内,它定义了等宽 bin 的数量。否则,定义了单调递增的 bin 边缘数组。它还包括最右边的边缘,这允许非均匀的 bin 宽度。最新版本的 numpy 允许我们将 bin 参数设置为字符串,这定义了一种计算最佳 bin 宽度的方法。

range:(float, float)(可选)

此参数定义 bin 的上下范围。默认情况下,范围为 (x.min(), x.max())。将忽略范围之外的值。第一个元素的范围应等于或小于第二个元素。

normed:bool(可选)

此参数与密度参数相同,但对于不均匀的 bin 宽度,它可能会给出错误的输出。

weights:array_like(可选)

此参数定义一个数组,该数组包含权重,并且与 'x' 具有相同的形状。

density:bool(可选)

如果将其设置为 True,则将产生每个 bin 中样本的数量。如果其值为 False,则密度函数将产生 bin 中概率密度函数的值。

返回值

hist:数组

密度函数返回直方图的值。

edge_bin:float dtype 的数组

此函数返回 bin 边缘 (length(hist+1))

示例 1

输出

(array([0, 1, 1], dtype=int64), array([0, 1, 2, 3]))

在上面的代码中

  • 我们使用别名 np 导入了 numpy。
  • 我们声明了变量“a”并分配了 np.histogram() 函数的返回值。
  • 我们向该函数传递了一个数组和 bin 的值。
  • 最后,我们尝试打印 'a' 的值。

在输出中,它显示了一个包含直方图值的 ndarray。

示例 2

输出

(array([0.16666667, 0.16666667, 0.16666667, 0.16666667, 0.16666667,
       0.16666667]), array([0, 1, 2, 3, 4, 5, 6]))

示例 3

输出

(array([0, 4, 2], dtype=int64), array([0, 1, 2, 3]))

示例 4

输出

array([0.17857143, 0.17857143, 0.17857143, 0.        , 0.17857143,
       0.17857143, 0.        , 0.17857143, 0.17857143, 0.17857143])
array([0. , 0.7, 1.4, 2.1, 2.8, 3.5, 4.2, 4.9, 5.6, 6.3, 7. ])

示例 5

输出

array([0.17857143, 0.17857143, 0.17857143, 0.        , 0.17857143,
       0.17857143, 0.        , 0.17857143, 0.17857143, 0.17857143])
1.4285714285714288
1.0

在上面的代码中

  • 我们使用别名 np 导入了 numpy。
  • 我们使用 np.arange() 函数创建了一个数组 'a'
  • 我们声明了变量 'hist''bin_edges',然后分配了 np.histogram() 函数的返回值。
  • 我们传递了数组 'a',并将 'density' 设置为 True。
  • 我们尝试打印 'hist' 的值。
  • 最后,我们尝试使用 hist.sum()np.sum()(在其中我们传递了直方图值和 bin 的边缘)来计算直方图值的总和。

在输出中,它显示了一个包含直方图值和直方图值总和的 ndarray。


下一个主题Numpy.sort