2017-05-02 4 views
2

すべての値が1つだけ表示されるリストがあり、トークン化されたnumpy配列の希望の順序を持​​つ別のリストがあります。例えばNumpy Arrayへの文字列(インデックス)のリストの変換

sorted_values = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] 
a = ['a', 'c', 'g'] 
b = ['e'] 

私はこのようなnumpyの配列に(効率的に)とbを変換したい:

at = [1,0,1,0,0,0,1] 
bt = [0,0,0,0,1,0,0] 

これを行うための任意の効率的な方法はありますか?

+0

を掲載ソリューションのいずれかがあなたのために働くましたか? – Divakar

答えて

1

あなたはnp.in1dを使用することができます。

np.in1d(sorted_values, a).astype(int) 
#array([1, 0, 1, 0, 0, 0, 1]) 

np.in1d(sorted_values, b).astype(int) 
#array([0, 0, 0, 0, 1, 0, 0]) 
3

最初の配列がすでにソートされて、私たちは効率のためにnp.searchsortedを採用することができたという事実の使用 -

at = np.zeros(len(sorted_values), dtype=int) 
bt = at.copy() 
at[np.searchsorted(sorted_values, a)] = 1 
bt[np.searchsorted(sorted_values, b)] = 1 
関連する問題