2017-12-05 12 views
0

私は例えば複雑な論理式に基づいて新しいnumpyワンホットエンコードマトリックスを作成しますか?

>>> import numpy as np 
>>> a = np.random.randint(0, 5, size=(5, 4)) 
>>> a 
array([[4, 2, 1, 1], 
     [3, 0, 1, 2], 
     [2, 0, 1, 1], 
     [4, 0, 2, 3], 
     [0, 0, 0, 2]]) 
>>> b = a < 3 
>>> c = b.astype(int) 
>>> c 
array([[0, 1, 1, 1], 
     [0, 1, 1, 1], 
     [1, 1, 1, 1], 
     [0, 1, 1, 0], 
     [1, 1, 1, 1]]) 

を簡単な論理式

に基づいて新しいnumpyマトリックスを作成する方法を尋ねるthis postにつまずいしかし、私は、私が希望例えば、より複雑な論理機能を使用したいです

X_Slow = (Y < 500).astype(int) 
X_Medium = (Y >= 500 and Y < 1000).astype(int) 
X_Fast = (Y >= 1000).astype(int) 

ただし、明らかに上記の操作は構文的に間違っています。私は、これが唯一の指定された条件に一致する要素の数を持つ配列を返したが、私は列に「1と0」の両方を希望

X_Medium = (Y[np.logical_and(Y >= 500,Y < 1000)]).astype(int) 

を試みました。

どうすればnumpyでこれを行うことができますか?

+0

を試してみてくださいNP WHERE':' np.where((Y> = 500)&(Y <1000)、1,0) ' – skrubber

答えて

0

ます。また `使用することができますX_Medium = np.logical_and(Y >= 500, Y < 1000).astype(int)代わり