在查找如何计算
这个参数实际上是做什么的?我是否只能通过再次迭代整个输出矩阵来获得我想要的行为?
numpy
中的伪逆时,我注意到numpy.linalg.pinv
有一个参数 rcond
,其描述如下:
据我的理解,如果rcond :(...)浮点数数组
小奇异值截断。奇异值小于rcond * largest_singular_value(同样是模)的奇异值将被设置为零。广播与矩阵堆栈相对。
rcond
是一个标量浮点数,则应该将输出中所有小于rcond
的条目设为零(这将非常有用),但实际上并非如此,例如:>>> A = np.array([[ 0., 0.3, 1., 0.],
[ 0., 0.4, -0.3, 0.],
[ 0., 1., -0.1, 0.]])
>>> np.linalg.pinv(A, rcond=1e-3)
array([[ 8.31963531e-17, -4.52584594e-17, -5.09901252e-17],
[ 1.82668420e-01, 3.39032588e-01, 8.09586439e-01],
[ 8.95805933e-01, -2.97384188e-01, -1.49788105e-01],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])
这个参数实际上是做什么的?我是否只能通过再次迭代整个输出矩阵来获得我想要的行为?