Python 变换numpy矩阵

Python 变换numpy矩阵,python,numpy,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])):

我正在尝试以以下方式变换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        

非常感谢您的帮助。

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

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

真棒的回答!!