scipy.stats.
cumfreq#
- scipy.stats.cumfreq(a, numbins=10, defaultreallimits=None, weights=None)[source]#
使用直方图函数返回累积频率直方图。
累积直方图是一种映射,用于计算指定直方图中所有直方块中的累积观测数目。
- 参数:
- aarray_like
输入数组。
- numbinsint, 可选
用于直方图的直方块数目。默认值为 10。
- defaultreallimits元组 (下限, 上限), 可选
直方图范围的下限值和上限值。如果没有给出该值,则使用略大于 a 中的值的范围。具体而言,
(a.min() - s, a.max() + s)
,其中s = (1/2)(a.max() - a.min()) / (numbins - 1)
。- weightsarray_like, 可选
a 中每个值的权重。默认值为 None,每个值给予权重 1.0
- 返回:
- cumcountndarray
累积频率的组内值。
- lowerlimitfloat
较低实际限制
- binsizefloat
每个仓的宽度。
- extrapointsint
额外点。
示例
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy import stats >>> rng = np.random.default_rng() >>> x = [1, 4, 2, 1, 3, 1] >>> res = stats.cumfreq(x, numbins=4, defaultreallimits=(1.5, 5)) >>> res.cumcount array([ 1., 2., 3., 3.]) >>> res.extrapoints 3
创建带有 1,000 个随机值的正态分布
>>> samples = stats.norm.rvs(size=1000, random_state=rng)
计算累积频率
>>> res = stats.cumfreq(samples, numbins=25)
计算 x 值的空间
>>> x = res.lowerlimit + np.linspace(0, res.binsize*res.cumcount.size, ... res.cumcount.size)
绘制直方图和累积直方图
>>> fig = plt.figure(figsize=(10, 4)) >>> ax1 = fig.add_subplot(1, 2, 1) >>> ax2 = fig.add_subplot(1, 2, 2) >>> ax1.hist(samples, bins=25) >>> ax1.set_title('Histogram') >>> ax2.bar(x, res.cumcount, width=res.binsize) >>> ax2.set_title('Cumulative histogram') >>> ax2.set_xlim([x.min(), x.max()])
>>> plt.show()