ダミー変数のベクトルを作成したい(Oか1しか取れない)。私は、次のことをやっている:効率的な方法でPythonのダミー変数を作成する
data = ['one','two','three','four','six']
variables = ['two','five','ten']
を、私は、次の2つの方法を得た:
dummy=[]
for variable in variables:
if variable in data:
dummy.append(1)
else:
dummy.append(0)
やリストの内包と:
dummy = [1 if variable in data else 0 for variable in variables]
結果はOKです:
>>> [1,0,0]
機能を組み込んでいますか?すごい仕事?変数が何千もの場合はちょっと遅いです。
編集は:time.time()
を使用しての結果: 私は、次のデータを使用しています:
data = ['one','two','three','four','six']*100
variables = ['two','five','ten']*100000
- ループ(私の例から):2.11秒
- リスト内包:1.55秒
- リスト理解度(変数は集合の型である):0.0004992秒
- ピーターの例:0.0004999秒
- falsetrueから例:0.000502秒
すなわち、 '変数=設定([ '2'、 '5'、 '10' ]) ' – SparkAndShine
このような量のデータで作業している場合は、numpy配列やpandasシリーズやデータフレームを見たいかもしれません。 – MaxU
@SparkandShine:実際のリテラルであれば、Python 2.7以降で中間の' list'をスキップできます'variables = {'two'、 'five'、 'ten'}'を使って 'set'を直接取得してください。 – ShadowRanger