2017-03-19 594 views
0

我的值當前在數組中顯示爲1.00+e09(類型爲float64)。我希望他們改爲顯示1000000000。這可能嗎?將numpy數組值轉換爲整數

+0

您是否想要使用'float64',或者您希望數據實際上只是整數? – Eric

+0

我希望他們是整數。我試圖在計算後將值寫回csv文件,然後將csv文件轉換爲excel文件。現在,我的excel文件中的值顯示爲1.00 + e09表單,我無法在excel上使用它。 – Student1001

回答

1

做一個樣品陣列

In [206]: x=np.array([1e9, 2e10, 1e6]) 
In [207]: x 
Out[207]: array([ 1.00000000e+09, 2.00000000e+10, 1.00000000e+06]) 

我們可以轉換爲整數 - 除了通知,最大的一個太大的默認INT32

In [208]: x.astype(int) 
Out[208]: array([ 1000000000, -2147483648,  1000000]) 

In [212]: x.astype(np.int64) 
Out[212]: array([ 1000000000, 20000000000,  1000000], dtype=int64) 

寫入與默認格式(浮點)的CSV(不管陣列D型的,這是默認格式):

In [213]: np.savetxt('text.txt',x) 
In [214]: cat text.txt 
1.000000000000000000e+09 
2.000000000000000000e+10 
1.000000000000000000e+06 

我們可以指定格式:

In [215]: np.savetxt('text.txt',x, fmt='%d') 
In [216]: cat text.txt 
1000000000 
20000000000 
1000000 

潛在的有3個問題:

  • 整數v浮在陣列本身,它的dtype
  • 陣列
  • 的顯示或打印
  • 將數組寫入csv文件
+0

謝謝,這有助於加載。 :) – Student1001

0

這是一個打印選項,請參閱文檔:printing options。簡單地說:你需要使用抑制選項打印時:

np.set_printoptions(suppress=True) # for small floating point. 

np.set_printoptions(suppress=True, formatter={'all':lambda x: str(x)}) 
+0

但重讀'壓制'。它與顯示小浮點有關,而不是大浮點。例如1E-9。 – hpaulj

+0

@hpaulj,true;但後來我只是使用格式化程序。 – gregory