2017-07-16 50 views
0

我是相當新的numpy。Python的Numpy的數組賦值鑄造int

如下圖所示,當我嘗試從字符串到整數投的數值,它似乎並沒有「大棒」,如下圖所示:

>> import numpy as np 
>>> a = np.array([['a','1','2'],['b','3','4']]) 
>>> a[:,1:3].astype(int) 
array([[1, 2], 
     [3, 4]]) 
>>> a[:,1:3] = a[:,1:3].astype(int) 
>>> a 
array([['a', '1', '2'], 
     ['b', '3', '4']], 
     dtype='<U1') 

我如何將字符串值轉換爲整數在數組中?

+3

NumPy數組是齊次的,沒有混合類型的數組(除了'object'數組,但這些不是我所謂的推薦!)。所以你需要問自己的問題是:「a」或「b」具有什麼樣的整數值? – MSeifert

回答

2

您需要先全陣列的dtype更改爲object,以便它同時包含字符串和整數:

a = a.astype(object) 
a[:,1:3] = a[:,1:3].astype(int) 
print(a) 
> [['a' 1 2] 
    ['b' 3 4]] 

但要注意的是更好的解決方案可能存在,例如使用pandas,使用列不同的類型。