NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中histogram方法的使用。

numpy.histogram

numpy.histogram(a, bins=10, range=None, normed=None, weights=None, density=None)    [source]

计算一组数据的直方图。

参数 :

a :array_like

输入数据。直方图是在展平的数组上计算的。

bins :int 或 sequence of scalars 或 str, 可选

如果bins是一个int,

则它定义给定范围内的等宽bin数(默认为10个)。

如果bin是序列,

则它定义bin边缘(包括最右边)的单调递增数组,

从而允许非均匀的bin宽度。 1.11.0版中的新功能。 

如果bin是字符串,

则它定义用于计算最佳bin宽度的方法,

如histogram_bin_edges所定义。

range :(float, float), 可选

bin的上下范围。如果未提供,

则范围只是(a.min(),a.max())

超出范围的值将被忽略。

范围的第一个元素必须小于或等于第二个。

范围也会影响自动bin计算。虽

然根据范围内的实际数据计算出箱宽是最佳的,

但bin数将填充整个范围,包括不包含数据的部分。

normed :bool, 可选

从1.6.0版开始不推荐使用。 这等效于密度参数,

但是对于不等的箱宽会产生不正确的结果。不应使用。

 在1.15.0版中进行了更改:

实际发出了DeprecationWarnings。

weights :array_like, 可选

一组与a形状相同的weights。 

每个中的每个值仅将其相关权重分配给仓位计数(而不是1)。

 如果density为True,则将权重标准化,

以使该范围内的密度积分保持为1。

density :bool, 可选

如果为False,则结果将包含每个bin中的样本数。

如果为True,则结果为bin处的概率密度函数的值,

将其归一化以使该范围内的积分为1。

注意,除非选择了单位宽度的bin,

否则直方图值的总和将不等于1;

否则,将不等于1。它不是概率质量函数。

如果指定,则覆盖normed关键字。

返回值 :

histarray

直方图的值。有关可能的语义的描述,请参见密度和权重。

bin_edges :array of dtype float

返回bin edges(length(hist)+1)

Notes

除了最后一个(最右边)的垃圾箱外,其他所有垃圾箱都是半开的。换句话说,如果bin是:

[1, 2, 3, 4]

那么第一个bin是[1,2)(包括1,但不包括2),第二个[2,3)。但是,最后一个bin是[3,4],其中包括4。

例子

>>> np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]))
>>> np.histogram(np.arange(4), bins=np.arange(5), density=True)
(array([0.25, 0.25, 0.25, 0.25]), array([0, 1, 2, 3, 4]))
>>> np.histogram([[1, 2, 1], [1, 0, 1]], bins=[0,1,2,3])
(array([1, 4, 1]), array([0, 1, 2, 3]))
>>> a = np.arange(5)
>>> hist, bin_edges = np.histogram(a, density=True)
>>> hist
array([0.5, 0. , 0.5, 0. , 0. , 0.5, 0. , 0.5, 0. , 0.5])
>>> hist.sum()
2.4999999999999996
>>> np.sum(hist * np.diff(bin_edges))
1.0

1.11.0版中的新功能。

自动箱选择方法示例,使用2个具有2000点的峰值随机数据:

>>> import matplotlib.pyplot as plt
>>> rng = np.random.RandomState(10)  # deterministic random data
>>> a = np.hstack((rng.normal(size=1000),
...                rng.normal(loc=5, scale=2, size=1000)))
>>> _ = plt.hist(a, bins='auto')  # arguments are passed to np.histogram
>>> plt.title("Histogram with 'auto' bins")
Text(0.5, 1.0, "Histogram with 'auto' bins")
>>> plt.show()

httpswwwcjavapycom

推荐文档

相关文档

大家感兴趣的内容

随机列表