【问题标题】:Display more than 16 digits in numpy [duplicate]在numpy中显示超过16位[重复]
【发布时间】:2017-03-17 10:41:49
【问题描述】:

我尝试在 python 中设置 np.set_printoptions(precision=100) 但输出仍然类似于 -0.00510610862213

无论如何要显示例如100位?

【问题讨论】:

  • 我认为 NumPy 不接受任意精度
  • 我希望您知道,配置显示精度不会为您提供超过 16 位的存储或计算精度。
  • 好的。谢谢你让我知道。

标签: python numpy


【解决方案1】:

您可以将显示精度更改为一个点。例如,看下面 我们可以将显示的位数更改为一个点,之后不再显示 显示数字。

In [1]: import numpy as np
In [2]: np.random.seed(42)
In [3]: a = np.random.randn(1,1)
In [4]: a
Out[4]: array([[ 0.49671415]])

In [5]: np.set_printoptions(precision=4)
In [6]: a
Out[6]: array([[ 0.4967]])

In [7]: np.set_printoptions(precision=54)
In [8]: a
Out[8]: array([[ 0.4967141530112326730517224859795533120632171630859375]])

In [9]: np.set_printoptions(precision=55)
In [10]: a
Out[10]: array([[ 0.4967141530112326730517224859795533120632171630859375]])

但是,不清楚你为什么要这样做,因为@user2357112 回避,这不会改变数值精度。 numpy 中的默认值是存储 如here 所述,64 位浮点数最多只能精确到 15 有效数字

这提供了 15–17 位有效十进制数字的精度。如果一个十进制字符串 最多 15 个有效数字转换为 IEEE 754 双精度 表示,然后转换回具有相同数量的字符串 有效数字,则最终字符串应与原始字符串匹配。如果一个 IEEE 754 双精度转换为十进制字符串至少有 17 有效数字,然后转换回双精度,那么最终数字必须 匹配原件。

这方面的一个例子是用

来说明的
In [11]: np.float64('0.454125401')
Out[11]: 0.45412540099999998

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 2016-07-23
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2015-04-24
    相关资源
    最近更新 更多