NumPy numpy.histogram()的使用

NumPy numpy.histogram()的使用

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或者str或标量的序列(可选)

如果此参数定义为整数,则在给定范围内定义等宽箱子的数量。 否则,定义了一个单调递增的箱子边界数组。 它还包括最右边的边界,允许非均匀的箱子宽度。 最新版本的 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’ 的值。

在输出中,它显示一个包含直方图值的二维数组。

示例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()计算直方图值的总和,其中我们传入了直方图值和bin的边界。

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程