如何在 Python 中设置结果的小数位数



我正在做矩阵分解,其输出矩阵具有非整数条目。为了使显示更紧凑,我想问一下如何限制结果的小数位数。非常感谢!

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)

最新更新