gpt4 book ai didi

python - list-to-numpy-to-list 之后 python 中的异常小数位

转载 作者:行者123 更新时间:2023-11-28 22:58:44 32 4
gpt4 key购买 nike

在我的 ubuntu linux 机器上的新 Python 2.7.3 解释器中执行以下代码会给出代码后显示的输出。

import numpy as np
p = [1/3., 1/2., 23/25., 1]
q = np.array(p)
r = list(q)
print p; print q; print r

输出:

[0.3333333333333333, 0.5, 0.92, 1]
[ 0.33333333 0.5 0.92 1. ]
[0.33333333333333331, 0.5, 0.92000000000000004, 1.0]

我试图找出为什么 p 和 r 打印出来的不同,但到目前为止还没有一个合理的理论。关于它们为何不同的任何想法?

最佳答案

它们的打印方式不同,因为pfloatint 的列表,而rfloat 的列表numpy.float64:

In [23]: map(type, p)
Out[23]: [float, float, float, int]

In [24]: map(type, r)
Out[24]: [numpy.float64, numpy.float64, numpy.float64, numpy.float64]

发生这种情况是因为 NumPy 数组是统一类型,所以当您创建 q 时,所有内容都会扩展为 float64

两个列表中的值比较相等,所以这纯粹是格式上的差异:

In [22]: p == r
Out[22]: True

关于python - list-to-numpy-to-list 之后 python 中的异常小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13629245/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com