簡體   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