我正在做矩阵分解,其输出矩阵具有非整数条目。为了使显示更紧凑,我想问一下如何限制结果的小数位数。非常感谢!
import numpy as np
import scipy.linalg as la
A = np.array([[1, 0, 8, 7, 8, 1],
[0, 1, 2, 8, 9, 2],
[5, 1, 0, 6, 10, 3],
[5, 4, 4, 8, 10, 4]])
(P, L, U) = la.lu(A)
F = np.array(sorted(U, key=lambda x: tuple(x!=0), reverse=False))
print(F)
[[ 0. 0. 0. 6.85483871 8.51612903 1.62903226]
[ 0. 0. 8.26666667 5.93333333 6. 0.46666667]
[ 0. 3. 4. 2. 0. 1. ]
[ 5. 1. 0. 6. 10. 3. ]]
PS:我想要求全局设置而不是重复将函数round
应用于每个输出。
您可以使用numpy.around:
import numpy as np
import scipy.linalg as la
A = np.array([[1, 0, 8, 7, 8, 1],
[0, 1, 2, 8, 9, 2],
[5, 1, 0, 6, 10, 3],
[5, 4, 4, 8, 10, 4]])
(P, L, U) = la.lu(A)
F = np.array(sorted(U, key=lambda x: tuple(x!=0), reverse=False))
F = list(map(lambda x: np.around(x,2),F)) # 2 here is the number of decimals
print(F)