2017-05-24 31 views
0

如何打印從2維混合陣列的線(含有整數和浮點數據類型),而不方括號和浮點類型中的間距和整數中的小數點? 我想用:從2維混合陣列打印線(含有整數和浮點數據類型)中Python2

for line in xd: 
    print line, 

得到最終的輸出
我試過代碼如下:

import numpy 
    x =[[1.456, 2, 3], 
     [4, 5.231, 6], 
     [7, 8, 9.145]] 
    x=numpy.array(x) 
    xd=numpy.array2string(x, separator='\t') 
    for line in xd: 
     print line, 

這是從代碼

[ [ 1 . 4 5 6  2 .    3 .  ] 
    [ 4 .    5 . 2 3 1  6 .  ] 
    [ 7 .    8 .    9 . 1 4 5 ] ] 

回答

0

輸出你x是列表清單

In [14]: x =[[1.456, 2, 3], 
    ...:   [4, 5.231, 6], 
    ...:   [7, 8, 9.145]] 
In [15]: x 
Out[15]: [[1.456, 2, 3], [4, 5.231, 6], [7, 8, 9.145]] 
In [16]: for row in x: 
    ...:  print(row) 
    ...:  
[1.456, 2, 3] 
[4, 5.231, 6] 
[7, 8, 9.145] 

我們可以爲每個row設置一個Python格式的打印表達式。

但首先看看當你做出一個數組會發生什麼:

In [17]: arr=np.array(x) 
In [18]: arr 
Out[18]: 
array([[ 1.456, 2. , 3. ], 
     [ 4. , 5.231, 6. ], 
     [ 7. , 8. , 9.145]]) 

這是一個二維數組 - 的D型浮動的,可容納兩個整數和浮點數的D型。形式上,你已經失去了浮動和整數之間的區別。

嘗試顯示不帶小數和不帶[]的數組比原始列表困難得多。數組格式化爲排列列做了很多工作,換句話說就是製作一個像顯示器一樣的漂亮的表格。如果數組是大行包裝的話,它會開始添加省略號。所以從顯示器的角度來看,你在製作陣列時實際上放鬆了控制。

np.savetxt可能有幫助;它可以用來寫沒有[]的行; 繪畫的靈感來自savetxt(以及它如何格式化行)所以

In [21]: for row in x: 
    ...:  print('%6s %6s %6s'%tuple(row)) 
    ...:  
1.456  2  3 
    4 5.231  6 
    7  8 9.145 

In [22]: for row in arr: 
    ...:  print('%6s %6s %6s'%tuple(row)) 
    ...:  
1.456 2.0 3.0 
    4.0 5.231 6.0 
    7.0 8.0 9.145 

,如果你是挑剔的數字的格式,堅持使用列表清單中,和Python的格式化系統(上晚自習是否%.format版本)。例如%g與陣列工程,以及與列表

In [29]: for row in arr: 
    ...:  print('%6.2g %6.3g %6g'%tuple(row)) 
    ...:  
    1.5  2  3 
    4 5.23  6 
    7  8 9.145