我想在 python中执行矩阵平衡。我想使用linalg.matrix_balance
以使输入矩阵成为双重随机矩阵:
from scipy import linalg
import numpy as np
x = np.array([[1,2,7], [9,1,1], [1,2,10*np.pi]])
y, permscale = linalg.matrix_balance(x)
np.abs(x).sum(axis=0) / np.abs(x).sum(axis=1)
np.abs(y).sum(axis=0) / np.abs(y).sum(axis=1)
permscale
array([[ 1., 0., 0.],
[ 0., 2., 0.],
[ 0., 0., 1.]])
看起来它实际上并没有平衡矩阵的行和列。知道我该怎么做吗?
如果我做:y, permscale = linalg.matrix_balance(x, scale=False)
结果也没有标准化:
array([[ 1. , 2. , 7. ], [ 9. , 1. , 1. ], [ 1. , 2. , 31.41592654]])