2017-10-18 24 views
0

numpy配列を持っているといいますか?x = np.array([0, 1, 2])は、対応する配列に要素を変換するようにビルトイン関数がありますか?numpy配列で1d numpy配列の要素を置き換えます

xの0を[1、0、0]、1から[0、1、0]、2から[0、0、1]に変換したい場合、期待される出力はnp.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])です。

私はx[x == 0] = np.array([1, 0, 0])を試しましたが、動作しません。

+0

あなたは[OneHotEncoder](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html)は – MaxU

+0

そうそう、それは使用することができます重複する。質問の文言は本当に異なっているので、私はそれを見つけられませんでした....しかし、私はそれを私の質問を削除することはできませんように見えます。 – user21

答えて

0

デモ:

In [38]: from sklearn.preprocessing import OneHotEncoder 

In [39]: ohe = OneHotEncoder() 

# modern versions of SKLearn methods don't like 1D arrays 
# they expect 2D arrays, so let's make it happy ;-)  
In [40]: res = ohe.fit_transform(x[:, None]) 

In [41]: res.A 
Out[41]: 
array([[ 1., 0., 0.], 
     [ 0., 1., 0.], 
     [ 0., 0., 1.]]) 

In [42]: res 
Out[42]: 
<3x3 sparse matrix of type '<class 'numpy.float64'>' 
     with 3 stored elements in Compressed Sparse Row format> 
関連する問題