scipy.stats.
relfreq#
- scipy.stats.relfreq(a, numbins=10, defaultreallimits=None, weights=None)[源代码][源代码]#
返回一个相对频率直方图,使用直方图函数。
相对频率直方图是对每个区间内观察次数相对于总观察次数的映射。
- 参数:
- aarray_like
输入数组。
- numbinsint, 可选
用于直方图的箱数。默认值为10。
- defaultreallimits元组 (下限, 上限), 可选
直方图范围的下限和上限。如果没有给出值,则使用略大于 a 中值范围的范围。具体来说
(a.min() - s, a.max() + s)
,其中s = (1/2)(a.max() - a.min()) / (numbins - 1)
。- 权重类似数组, 可选
a 中每个值的权重。默认是 None,表示每个值的权重为 1.0。
- 返回:
- 频率ndarray
相对频率的分箱值。
- 下限浮动
下限。
- binsize浮动
每个箱子的宽度。
- 额外积分整数
额外积分。
示例
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy import stats >>> rng = np.random.default_rng() >>> a = np.array([2, 4, 1, 2, 3, 2]) >>> res = stats.relfreq(a, numbins=4) >>> res.frequency array([ 0.16666667, 0.5 , 0.16666667, 0.16666667]) >>> np.sum(res.frequency) # relative frequencies should add up to 1 1.0
创建一个包含1000个随机值的正态分布
>>> samples = stats.norm.rvs(size=1000, random_state=rng)
计算相对频率
>>> res = stats.relfreq(samples, numbins=25)
计算 x 的值域
>>> x = res.lowerlimit + np.linspace(0, res.binsize*res.frequency.size, ... res.frequency.size)
绘制相对频率直方图
>>> fig = plt.figure(figsize=(5, 4)) >>> ax = fig.add_subplot(1, 1, 1) >>> ax.bar(x, res.frequency, width=res.binsize) >>> ax.set_title('Relative frequency histogram') >>> ax.set_xlim([x.min(), x.max()])
>>> plt.show()