【问题标题】:How to set the number of decimals of results in Python如何在 Python 中设置结果的小数位数
【发布时间】:2020-06-01 22:05:12
【问题描述】:

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

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 应用于每个输出。

【问题讨论】:

  • 以下是您问题的类似答案:stackoverflow.com/questions/455612/…
  • @Panda50 我想请求一个全局设置而不是重复应用函数round
  • 使用 np.array 真的很简单!也看看这个答案:stackoverflow.com/a/37822702/13350827
  • @Panda50 使用您的解决方案,我必须将函数 np.around 应用于我要打印的每个结果。
  • 不是真的,在你的代码上试试这个: print(np.around(F,2)) 我想它会给你你想要的东西!

标签: python-3.x floating-point


【解决方案1】:

你可以使用 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2022-06-23
    • 1970-01-01
    相关资源
    最近更新 更多