📜  Python numpy.histogram

📅  最后修改于: 2020-10-27 08:49:12             🧑  作者: Mango

Python的numpy.histogram()

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

简而言之,此函数用于计算数据集的直方图。

句法:

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

参数:

x:类似数组

此参数定义一个扁平数组,在该数组上可以计算直方图。

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

如果将此参数定义为整数,则在给定范围内,它将定义等宽bin的数量。否则,定义了单调增加的仓边阵列。它还包括最右边,允许不均匀的料槽宽度。最新版本的numpy允许我们将bin参数设置为字符串,该字符串定义了一种用于计算最佳bin宽度的方法。

范围:(float,float)(可选)

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

标准化的:bool(可选)

此参数与density参数相同,但是对于不等的箱宽,它会给出错误的输出。

权重:array_like(可选)

此参数定义一个包含权重且形状与“ x”相同的数组。

密度:布尔(可选)

如果将其设置为True,将导致每个bin中的样本数量。如果其值为False,则密度函数将得出分箱中概率密度函数的值。

返回值:

hist:数组

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

edge_bin:float dtype的数组

此函数返回bin边(length(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的值。
  • 最后,我们尝试print‘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。
  • 我们试图print‘hist’的值。
  • 最后,我们尝试使用hist.sum()np.sum()来计算直方图值的总和,其中我们传递了直方图值和bin的边缘。

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