2017-06-05 29 views
0

我想創建一個表格導出爲CSV。我必須附上不同的數值(帶小數),並且我還想附上一個指標欄。這是由空格'_'和'X'組成的,以幫助我完成數據的後處理。 正如你可以在下面的代碼中看到的,雖然我只附加數值的小數是存在的,而如果我追加字符串列的小數值消失。numpy.hstack與字符串和數字刪除小數

我想我也會使用數值作爲指標列,但我想了解這種行爲。是否可以附加字符串列和數值避免消除小數?

>>> c = np.hstack((b,error_perc_notabs_array,error_array)) 
>>> c 
array([[ 3.63200000e-01, 6.52800000e-01, 4.70400000e-01, 
      2.13117665e-02, 2.52124411e-02, 1.83029153e+01, 
      3.90067457e-03], 
     [ 4.16000000e-01, 7.82400000e-01, 4.48000000e-01, 
      2.25692703e-02, 4.35769819e-02, 9.30810405e+01, 
      2.10077116e-02]]) 
>>> z 
[array([' '], 
     dtype='|S1'), array(['X'], 
     dtype='|S1')] 
>>> shape(z) 
(2L, 1L) 
>>> d = np.hstack((z,c)) 
>>> d 
array([[' ', '0', '0', '0', '0', '0', '1', '0'], 
     ['X', '0', '0', '0', '0', '0', '9', '0']], 
     dtype='|S1') 

回答

0

numpy的所有元素轉換爲一個共同的數據類型,也就是,你的情況S1,長度爲1

串儘管這樣,我的測試表明,該共同的數據類型OS S1floatS32

>>> z = array([['X'],[' ']], dtype='S1') 
>>> d = numpy.hstack((z,c)) 
>>> d 
array([[b'X', b'0.3632', b'0.6528', b'0.4704', b'0.0213117665', 
     b'0.0252124411', b'18.3029153', b'0.00390067457'], 
     [b' ', b'0.416', b'0.7824', b'0.448', b'0.0225692703', 
     b'0.0435769819', b'93.0810405', b'0.0210077116']], 
     dtype='|S32') 
+0

非常感謝丹尼爾的答案!你正在使用哪個版本的Python?我在WinPython上使用Python 2.7.6.4。你認爲這取決於這個? – federico