📅  最后修改于: 2020-10-27 08:49:12             🧑  作者: Mango
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))。
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]))
在上面的代码中
在输出中,它显示了包含直方图值的ndarray。
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]))
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]))
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. ])
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
在上面的代码中
在输出中,它显示了一个ndarray,其中包含直方图的值和直方图值的总和。