numpy中的均方根和矩阵和numpy阵列的并发症

fed*_*asu 13 python numpy

任何人都可以指导我到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,:])

当我打印k或输入kipython时

它显示以下内容

K = array ([[2,.3 .....
              ......
                9]])
Run Code Online (Sandbox Code Playgroud)

你会看到双方括号(这使我觉得它是多暗的),它给它的形状=(1,N)

但我不能将它分配给以这种方式定义的数组

l = np.zeros(N)
shape = (,N) or perhaps (N,) something like that

l[:] = k[:]
error:
matrix dimensions incompatible
Run Code Online (Sandbox Code Playgroud)

有没有办法完成我打算做的矢量分配...请不要告诉我这样做l = k(这会失败目的......我在程序中得到不同的错误......我知道原因..如果你需要我可以附上这段代码)

写一个循环是愚蠢的方式..我暂时使用...

我希望我能够解释......我面临的问题......

问候 ...

dep*_*ted 67

对于RMS,我认为这是最清楚的:

from numpy import mean, sqrt, square, arange
a = arange(10) # For example
rms = sqrt(mean(square(a)))
Run Code Online (Sandbox Code Playgroud)

代码读起来就像你说的那样:"root-mean-square".

  • 我经常处理复杂的数据,在这种情况下,方形是不够的.你需要像`abs(a)**2这样的东西 (4认同)
  • 只有当它代替**2时它才是"方形",它才能得到它的好处 (2认同)

小智 9

对于RMS,在最快的表情我已经找到了小x.size(〜1024)和真正的x是:

def rms(x):
    return np.sqrt(x.dot(x)/x.size)
Run Code Online (Sandbox Code Playgroud)

这似乎是linalg.norm版本的两倍(ipython%timeit在一台非常旧的笔记本电脑上).

如果您希望更复杂地处理复杂数组,那么这也可以工作:

def rms(x):
    return np.sqrt(np.vdot(x, x)/x.size)
Run Code Online (Sandbox Code Playgroud)

但是,此版本几乎与版本一样慢norm,仅适用于平面阵列.


Xin*_*ong 6

对于RMS,怎么样

norm(V)/sqrt(V.size)
Run Code Online (Sandbox Code Playgroud)

  • 赞成,因为它很简洁,但规范来自“np.linalg”而不是直接来自“np”,并且它没有可选的“axis”参数,这对于使 rms 函数更通用很有用 (2认同)

Ben*_*Ben 6

我不知道为什么它没有内置.我喜欢

def rms(x, axis=None):
    return sqrt(mean(x**2, axis=axis))
Run Code Online (Sandbox Code Playgroud)

如果您的数据中有nans,则可以执行此操作

def nanrms(x, axis=None):
    return sqrt(nanmean(x**2, axis=axis))
Run Code Online (Sandbox Code Playgroud)

  • 我经常处理复杂的数据,在这种情况下,方形是不够的.你需要像`abs(x)**2'而不只是`x**2`这样的东西 (2认同)

hig*_*dth 5

试试这个:

U = np.zeros((N,N))
ind = 1
k = np.zeros(N)
k[:] = U[ind,:]
Run Code Online (Sandbox Code Playgroud)