2017-01-10 1 views
0

私は私がPython:genfromtxt()関数でコンバータがどのように機能しますか?

次のことを理解していないことを、次の例があり、Pythonのに新しいですが、

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

その後、いくつかのデータをcsvファイルで、例は、変換する関数を定義しようとしますそれらの木は整数より上に名づけられます。

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さて、そのドキュメントはかなり簡単です。私の2番目の質問に答えてもらえますか? –

答えて

1

)によると、{1:convert}は、キーが列番号(最初の列が列0)で、その値がその列のエントリを変換する関数である辞書です。

このコードでは、1はcsvファイルの列1を示し、1はツリーの名前を持つ列を示します。この引数を含めると、numpyはconvert関数を使用して、ツリー名を対応する数字のdataに置き換えます。

関連する問題