任何人都可以指导我到numpy手册的部分,我可以获得功能来完成均方根计算...... (我知道这可以使用np.mean和np.abs完成..是不是内置..如果没有原因??只是好奇..没有进攻)
任何人都可以解释矩阵和数组的复杂性(仅在以下情况中):
U
是一个矩阵(T-by-N,或者说是T cross N),Ue
是另一个矩阵(T-by-N)
我将k
定义为numpy数组
U[ind,:]
仍为矩阵
以下列方式
k = np.array(U[ind,:])
我在ipython中打印k
或输入k
显示以下
K = array ([[2,.3 .....
......
9]])
你看到双方括号(这让我觉得它很朦胧) 它给它的形状=(1,N)
但我无法将其分配给以这种方式定义的数组
l = np.zeros(N)
shape = (,N) or perhaps (N,) something like that
l[:] = k[:]
error:
matrix dimensions incompatible
有没有办法完成我打算做的矢量分配...请不要告诉我这样做l = k
(这会失败目的......我在程序中得到不同的错误..我知道原因..如果你需要我可以附上这段代码)
我希望我能够解释......我面临的问题......
问候......
答案 0 :(得分:63)
对于RMS,我认为这是最清楚的:
from numpy import mean, sqrt, square, arange
a = arange(10) # For example
rms = sqrt(mean(square(a)))
代码读起来就像你说的那样:“root-mean-square”。
答案 1 :(得分:9)
对于有效值,我找到的小x.size
(~1024)和实际x
的最快表达式为:
def rms(x):
return np.sqrt(x.dot(x)/x.size)
这似乎是linalg.norm
版本的两倍(在真正的旧笔记本电脑上的ipython%timeit)。
如果您希望更复杂地处理复杂数组,那么这也可以起作用:
def rms(x):
return np.sqrt(np.vdot(x, x)/x.size)
但是,此版本几乎与norm
版本一样慢,仅适用于平面阵列。
答案 2 :(得分:6)
对于RMS,怎么样
norm(V)/sqrt(V.size)
答案 3 :(得分:6)
我不知道为什么它没有内置。我喜欢
def rms(x, axis=None):
return sqrt(mean(x**2, axis=axis))
如果您的数据中有nans,则可以执行
def nanrms(x, axis=None):
return sqrt(nanmean(x**2, axis=axis))
答案 4 :(得分:5)
试试这个:
U = np.zeros((N,N))
ind = 1
k = np.zeros(N)
k[:] = U[ind,:]
答案 5 :(得分:0)
我将它用于RMS,全部使用NumPy,并且让它也有一个与其他NumPy函数类似的可选axis
:
import numpy as np
rms = lambda V, axis=None: np.sqrt(np.mean(np.square(V), axis))