对于(-pi,pi)范围内的一系列角度值,我制作直方图.有没有一种有效的方法来计算均值和模态(可能后)值?考虑以下示例:
import numpy as N, cmath
deg = N.pi/180.
d = N.array([-175., 170, 175, 179, -179])*deg
i = N.sum(N.exp(1j*d))
ave = cmath.phase(i)
i /= float(d.size)
stdev = -2. * N.log(N.sqrt(i.real**2 + i.imag**2))
print ave/deg, stdev/deg
Run Code Online (Sandbox Code Playgroud)
现在,让我们有一个直方图:
counts, bins = N.histogram(data, N.linspace(-N.pi, N.pi, 360))
Run Code Online (Sandbox Code Playgroud)
是否有可能计算平均值,具有计数和箱数的模式?对于非周期性数据,平均值的计算很简单:
ave = sum(counts*bins[:-1])
Run Code Online (Sandbox Code Playgroud)
模态值的计算需要更多努力.实际上,我不确定下面的代码是否正确:首先,我确定最常发生的箱子然后我计算算术平均值:
cmax = bins[N.argmax(counts)]
mode = N.mean(N.take(bins, N.nonzero(counts == cmax)[0]))
Run Code Online (Sandbox Code Playgroud)
我不知道如何计算这些数据的标准偏差.对我所有问题(至少上述那些问题)的一个明显的解决方案是将直方图数据转换为数据系列,然后在计算中使用它.然而,这并不优雅,而且效率低下.
任何提示将非常感激.
这是我写的部分解决方案.
import numpy as N, cmath
import scipy.stats as ST
d = [-175, 170.2, 175.57, 179, -179, 170.2, 175.57, 170.2]
deg …Run Code Online (Sandbox Code Playgroud)