当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.circstd用法及代码示例


本文简要介绍 python 语言中 scipy.stats.circstd 的用法。

用法:

scipy.stats.circstd(samples, high=6.283185307179586, low=0, axis=None, nan_policy='propagate', *, normalize=False)#

计算假定在 [低到高] 范围内的样本的循环标准偏差。

参数

samples array_like

输入数组。

high float 或 int,可选

样本范围的上限。默认为 2*pi

low float 或 int,可选

样本范围的下限。默认值为 0。

axis 整数,可选

计算标准偏差的轴。默认值是计算展平数组的标准差。

nan_policy {‘propagate’, ‘raise’, ‘omit’},可选

定义当输入包含 nan 时如何处理。 ‘propagate’ 返回 nan,‘raise’ 引发错误,‘omit’ 执行忽略 nan 值的计算。默认为‘propagate’。

normalize 布尔值,可选

如果为 True,则返回值等于 sqrt(-2*log(R)) 并且不依赖于变量单位。如果为 False(默认值),则返回值按 ((high-low)/(2*pi)) 缩放。

返回

circstd 浮点数

圆形标准偏差。

注意

这使用了[1]中的圆形标准偏差的定义。本质上,计算如下。

import numpy as np
C = np.cos(samples).mean()
S = np.sin(samples).mean()
R = np.sqrt(C**2 + S**2)
l = 2*np.pi / (high-low)
circstd = np.sqrt(-2*np.log(R)) / l

在小角度的限制下,它返回一个接近‘linear’标准差的数字。

参考

[1]

玛迪亚,K.V. (1972)。 2. 在定向数据统计(第 18-24 页)。学术出版社。DOI:10.1016/C2013-0-07425-7.

例子

>>> import numpy as np
>>> from scipy.stats import circstd
>>> import matplotlib.pyplot as plt
>>> samples_1 = np.array([0.072, -0.158, 0.077, 0.108, 0.286,
...                       0.133, -0.473, -0.001, -0.348, 0.131])
>>> samples_2 = np.array([0.111, -0.879, 0.078, 0.733, 0.421,
...                       0.104, -0.136, -0.867,  0.012,  0.105])
>>> circstd_1 = circstd(samples_1)
>>> circstd_2 = circstd(samples_2)

绘制样本。

>>> fig, (left, right) = plt.subplots(ncols=2)
>>> for image in (left, right):
...     image.plot(np.cos(np.linspace(0, 2*np.pi, 500)),
...                np.sin(np.linspace(0, 2*np.pi, 500)),
...                c='k')
...     image.axis('equal')
...     image.axis('off')
>>> left.scatter(np.cos(samples_1), np.sin(samples_1), c='k', s=15)
>>> left.set_title(f"circular std: {np.round(circstd_1, 2)!r}")
>>> right.plot(np.cos(np.linspace(0, 2*np.pi, 500)),
...            np.sin(np.linspace(0, 2*np.pi, 500)),
...            c='k')
>>> right.scatter(np.cos(samples_2), np.sin(samples_2), c='k', s=15)
>>> right.set_title(f"circular std: {np.round(circstd_2, 2)!r}")
>>> plt.show()
scipy-stats-circstd-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.circstd。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。