2017-02-02 39 views
1
import numpy as np 
row_num=24983 
col_size = 102 
arr = np.zeros((row_num,col_num)) 
arr[:,0]= np.arange(row_num) 

當我寫它,它給了我科學記數法陣一樣,numpy的塊科學記數法

array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ..., 
      0.00000000e+00, 0.00000000e+00, 0.00000000e+00], 
     [ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, ..., 
      0.00000000e+00, 0.00000000e+00, 0.00000000e+00], 
     [ 2.00000000e+00, 0.00000000e+00, 0.00000000e+00, ..., 
      0.00000000e+00, 0.00000000e+00, 0.00000000e+00], 
     ..., 
     [ 2.49800000e+04, 0.00000000e+00, 0.00000000e+00, ..., 
      0.00000000e+00, 0.00000000e+00, 0.00000000e+00], 
     [ 2.49810000e+04, 0.00000000e+00, 0.00000000e+00, ..., 
      0.00000000e+00, 0.00000000e+00, 0.00000000e+00], 
     [ 2.49820000e+04, 0.00000000e+00, 0.00000000e+00, ..., 
      0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]) 

,但我不希望這樣做。我想正常numpy的陣列一樣,

array([[ 0., 0., 0., ..., 0., 0., 0.], 
     [ 1., 0., 0., ..., 0., 0., 0.], 
     [ 2., 0., 0., ..., 0., 0., 0.], 
     ..., 
     [ 24980., 0., 0., ..., 0., 0., 0.], 
     [ 24981., 0., 0., ..., 0., 0., 0.], 
     [ 24982., 0., 0., ..., 0., 0., 0.]]) 

編輯:我知道np.set_printoptions但我會寫的陣列到CSV文件,當我做到這一點它仍然與科學記數法寫入文件。我該怎麼辦?

回答

1

爲了控制顯示陣列的方式,你可以使用np.set_printoptions設置浮動格式化功能:

In [13]: np.set_printoptions(formatter={'float': '{:g}'.format}) 

In [14]: arr 
Out[14]: 
array([[0, 0, 0, ..., 0, 0, 0], 
     [1, 0, 0, ..., 0, 0, 0], 
     [2, 0, 0, ..., 0, 0, 0], 
     ..., 
     [24980, 0, 0, ..., 0, 0, 0], 
     [24981, 0, 0, ..., 0, 0, 0], 
     [24982, 0, 0, ..., 0, 0, 0]]) 

g格式的意思是described here。儘管g格式通常能夠以無需指數表示法的人類可讀方式呈現簡單的浮點數,但不能保證從不使用指數表示法。

因此,您可以改爲使用f格式,例如 np.set_printoptions(formatter={'float': '{:.2f}'.format})如果您希望 顯示具有固定級別的精度的所有浮點數。這保證不使用指數表示法。


或者,你可以使用

In [25]: np.set_printoptions(suppress=True) 

In [26]: arr 
Out[26]: 
array([[  0.,  0.,  0., ...,  0.,  0.,  0.], 
     [  1.,  0.,  0., ...,  0.,  0.,  0.], 
     [  2.,  0.,  0., ...,  0.,  0.,  0.], 
     ..., 
     [ 24980.,  0.,  0., ...,  0.,  0.,  0.], 
     [ 24981.,  0.,  0., ...,  0.,  0.,  0.], 
     [ 24982.,  0.,  0., ...,  0.,  0.,  0.]]) 

suppress=True告訴np.set_printoptions打壓使用科學記數法小浮點值的打印。


要創建一個CSV文件使用

np.savetxt(filename, arr, fmt='%g') 

The fmt parameter允許您控制使用printf-style string formatting的浮點格式。

+0

謝謝,它在終端上工作,除此之外,我會將數組寫入一個csv文件,當我這樣做時,它仍然以科學記數法寫入 –

+0

使用'np.savetxt(filename,arr,fmt = '%g')'來創建CSV。 'fmt'參數允許你控制浮點格式。 – unutbu

+0

謝謝!有效。我能問個問題嗎?我的英語不好,所以我不明白你給了哪個鏈接。你能解釋一下\t什麼是格式g或G或b等等。 –