按平均值标准化Numpy矩阵行

Joz*_*sky 0 python numpy matrix

我想按平均值对矩阵行进行标准化,然后我为它编写了这段代码

m = np.matrix(
    [[1,2,3,4,5],
     [2,3,2,5,3],
     [5,5,5,3,2]])

for row in m[:,]:
    average = row.sum() / row.shape[1]
    row = row / average
Run Code Online (Sandbox Code Playgroud)

在循环中,我将行除以平均值.但是这种划分不会改变矩阵m.如何以最简单,最智能的方式实现这种规范化?

unu*_*tbu 6

计算行的平均值和计算m/average:

In [36]: average = m.mean(axis=1)

In [37]: average
Out[37]: 
matrix([[ 3.],
        [ 3.],
        [ 4.]])

In [38]: m/average
Out[38]: 
matrix([[ 0.33333333,  0.66666667,  1.        ,  1.33333333,  1.66666667],
        [ 0.66666667,  1.        ,  0.66666667,  1.66666667,  1.        ],
        [ 1.25      ,  1.25      ,  1.25      ,  0.75      ,  0.5       ]])
Run Code Online (Sandbox Code Playgroud)

请注意,如果矩阵包含NaN值,则可以使用np.nanmean(m, axis=1)而不是m.mean(axis=1)计算行方式而忽略NaN.