我正试图以下列方式改变一个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
非常感谢任何帮助。
答案 0 :(得分:0)
您乘以的第二个矩阵是求和行和求和列的外积,因此您可以将新矩阵写为:
Mat = Mat - np.outer(np.sum(Mat, axis=1), np.sum(Mat, axis=0))