变换numpy矩阵

时间:2017-07-04 22:53:59

标签: python numpy

我正试图以下列方式改变一个numpy矩阵(比如说' Mat '):

Mat[i,j] = Mat[i,j] - numpy.sum(Mat[i,:]) * numpy.sum(Mat[:,j]) 

下面给出的是我正在使用的代码(两个用于循环)。我想知道是否有更快的方法来实现它。

def Normalize(Mat):
    MargR = Mat.sum(axis=0)
    MargC = Mat.sum(axis=1)
    for i in range(len(Mat[:,0])):
        for j in range(len(Mat[0,:])):
            Mat[i,j] = Mat[i,j] - MargC[i]*MargR[j]
    return Mat        

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您乘以的第二个矩阵是求和行和求和列的外积,因此您可以将新矩阵写为:

Mat = Mat - np.outer(np.sum(Mat, axis=1), np.sum(Mat, axis=0))