我想在Python中计算函数的均方根。我的函数形式简单,例如y = f(x)。 x和y是数组。
我尝试过Numpy和Scipy文档,但没有找到相关内容。
我想在Python中计算函数的均方根。我的函数形式简单,例如y = f(x)。 x和y是数组。
我尝试过Numpy和Scipy文档,但没有找到相关内容。
我假定您想要计算以下伪代码给出的表达式:
ms = 0
for i = 1 ... N
ms = ms + y[i]^2
ms = ms / N
rms = sqrt(ms)
即,求y
元素的平方值的平均数的平方根。
在numpy中,你可以简单地对y
进行平方运算,取它的平均值,然后再取平方根,如下所示:
rms = np.sqrt(np.mean(y**2))
所以,举个例子:
>>> y = np.array([0, 0, 1, 1, 0, 1, 0, 1, 1, 1]) # Six 1's
>>> y.size
10
>>> np.mean(y**2)
0.59999999999999998
>>> np.sqrt(np.mean(y**2))
0.7745966692414834
如果您的问题意思不明确,请澄清一下。
y.astype(float)
。 - Praveen您可以使用sklearn函数。
from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_actual,[0 for _ in y_actual], squared=False)
只需使用math.dist(x, y)
。 RMS基本上是N维欧几里得距离。
x.mean() == 0
这个非常特殊的情况下才是正确的。 - Seb如果您想在计算 RMS 之前对数组进行框架,这是一个 numpy
解决方案:
nframes = 1000
rms = np.array([
np.sqrt(np.mean(arr**2))
for arr in np.array_split(arr,nframes)
])
frame_length = 200
arr_length = arr.shape[0]
nframes = arr_length // frame_length +1