2017-01-10 34 views
0

我是新來的Python,我有以下的例子,我不明白Python:轉換器如何在genfromtxt()函數中工作?

下面是一個CSV文件的一些數據

%%writefile wood.csv 
item,material,number 
100,oak,33 
110,maple,14 
120,oak,7 
145,birch,3 

然後,例如試圖定義一個函數來轉換那些樹名以上爲整數。

tree_to_int = dict(oak = 1, 
        maple=2, 
        birch=3) 

def convert(s): 
    return tree_to_int.get(s, 0) 

第一個問題是爲什麼在「s」之後會出現「0」?我刪除了「0」並得到相同的結果。

的最後一步是通過numpy.array

data = np.genfromtxt('wood.csv', 
        delimiter=',', 
        dtype=np.int, 
        names=True, 
        converters={1:convert} 
        ) 

我想知道的轉換參數,來讀取這些數據是什麼{1:轉換}確切是什麼意思?尤其是數字1在這種情況下意味着什麼?

+1

有關您的第一個問題,請參閱http://stackoverflow.com/questions/2068349/understanding-get-method-in-python –

+1

另請參閱https://docs.python.org/3/library上的Python文檔/stdtypes.html#mapping-types-dict;向下滾動查看['get'方法]的描述(https://docs.python.org/3/library/stdtypes.html#dict.get)。 –

+0

@WarrenWeckesser好的,這個文檔非常簡單。你介意回答我的第二個問題嗎? –

回答

1

對於第二個問題,根據文檔(https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html),{1:convert}是一個字典,其鍵是列號(其中第一列是第0列),其值是轉換該列中的項的函數。

因此,在此代碼中,1表示csv文件的第一列,第二列是樹的名稱。包括這個參數會導致numpy使用convert函數來替換data中的樹名和相應的數字。