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

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

语法:

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

参数:

x: array_like

这个参数定义了一个扁平化的数组,用于计算直方图。

bins: int或sequence of str或scalars(可选)

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

range: (float, float)(可选)

这个参数定义了箱的下限和上限范围。默认情况下,范围是(x.min(), x.max())。超出范围的值将被忽略。第一个元素的范围应小于或等于第二个元素。

normed: bool(可选)

这个参数与密度参数相同,但对于不等宽的箱宽可能会产生错误的输出。

weights: array_like(可选)

这个参数定义了一个包含权重的数组,形状与'x'相同。

density: bool(可选)

如果设置为True,将在每个箱中返回样本数。如果其值为False,密度函数将在箱中返回概率密度函数的值。

返回值:

hist: 数组

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

edge_bin: 浮点数数组

这个函数返回箱的边缘(长度为hist+1)

示例1:

import numpy as np  
a=np.histogram([1, 5, 2], bins=[0, 1, 2, 3])  
a  

输出:

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

在上面的代码中:

  • 我们导入了别名为np的numpy。
  • 我们声明了变量'a',并赋值为np.histogram()函数的返回值。
  • 我们在函数中传递了一个数组和bin的值。
  • 最后,我们尝试打印'a'的值。

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

示例2:

import numpy as np  
x=np.histogram(np.arange(6), bins=np.arange(7), density=True)  
x  

输出:

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

示例3:

import numpy as np  
x=np.histogram([[1, 3, 1], [1, 3, 1]], bins=[0,1,2,3])  
x 

输出:

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

示例4:

import numpy as np  
a = np.arange(8)  
hist, bin_edges = np.histogram(a, density=True)  
hist  
bin_edges  

输出:

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:

import numpy as np  
a = np.arange(8)  
hist, bin_edges = np.histogram(a, density=True)  
hist  
hist.sum()  
np.sum(hist * np.diff(bin_edges))  

输出:

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()计算直方图值的总和,其中我们传递了直方图值和箱的边缘。

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

标签: NumPy, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶