繁体   English   中英

列表到numpy到列表后在python中的异常小数位

[英]Anomalous decimal places in python after list-to-numpy-to-list

在我的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的列表,而rnumpy.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

我认为这只是在如何区别__repr__为实现np.float64与蟒蛇float

当您从numpy数组中创建列表时,将元素(类型为np.float64 )放入列表中。 因此,您实际上已经将原始数据的类型从floatnp.float64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM