2016-01-23 22 views
0

所以我下面的代碼片段:爲什麼將浮點列表轉換爲numpy數組會改變某些變量的值?

with open('dataset/train/problem.csv', 'r') as p: 
raw_x = csv.reader(p) 
data_x = [] 
for ix in raw_x: 
    data_x.append([float(i) for i in ix]) 
print(data_x) 

這將打印輸出如下:

[[217.0, 118.0, 0.63, 755.0, 1071.0], [217.0, 118.0, 0.63, 755.0, 1071.0],...] 

現在我想這種結構轉換成浮動的numpy的陣列,這樣我可以用它scikit學習作爲觀察輸入。但是,當我嘗試做以下

X = np.array(data_x) 
print(X) 

它提供了以下結果:

[ 2.17000000e+02 1.18000000e+02 6.30000000e-01 7.55000000e+02 
1.07100000e+03] 
... 
[ 2.17000000e+02 1.18000000e+02 6.30000000e-01 7.55000000e+02 
1.07100000e+03] 

它仍然浮動,但十進制值不正確。

一直試圖弄清楚爲什麼會發生這種情況,因爲源數組也是浮動的。我曾嘗試提供type=floatastype,但似乎沒有任何工作。

謝謝!

回答

1

數組中的值是相同的。例如,2.1700000000e+22.17 x 10^2217,這與原始數組中的相同。

numpy數組使用科學記數法代替標準小數形式。

+0

謝謝,這是scikit-learn中使用的正確結構嗎? –

+0

我不是很有經驗,但我相信。 – AMACB

0

這些值在列表和數組中相同。這只是一個不同的表示。

您可以用科學計數法格式化Python的浮動:

>>> '{:e}'.format(11.7) 
'1.170000e+01' 

NumPy的使用這種表示。就這樣。

+0

謝謝,這是正確的結構使用scikit學習? –

+0

是的。 NumPy數組可以與大多數(所有)Python數據類型一起使用。 –

相關問題