7

私が持っていると言う

Y = np.array([2, 0, 1, 1])

これから、 shape の行列 X を取得したいと思い (len(Y), 3)ます。この特定のケースでは、X の最初の行の 2 番目のインデックスは 1 で、それ以外は 0 でなければなりません。X の 2 行目は、インデックス 0 の場合は 1、それ以外の場合は 0 になります。明確にするために:

X = np.array([[0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 1, 0]])

このマトリックスを作成するにはどうすればよいですか? 私はから始めました

X = np.zeros((Y.shape[0], 3))

しかし、インデックスのリストからそれらを作成/入力する方法を理解できませんでした

いつもありがとうございます。

4

3 に答える 3

13

多分:

>>> Y = np.array([2, 0, 1, 1])
>>> X = np.zeros((len(Y), 3))
>>> X[np.arange(len(Y)), Y] = 1
>>> X
array([[ 0.,  0.,  1.],
       [ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  1.,  0.]])
于 2013-09-23T21:01:57.720 に答える
3

DSMの完全に良い答えにワンライナーの代替案を与えるには:

>>> Y = np.array([2, 0, 1, 1])
>>> np.arange(3) == Y[:, np.newaxis]
array([[False, False,  True],
       [ True, False, False],
       [False,  True, False],
       [False,  True, False]], dtype=bool)
于 2013-09-23T21:21:40.143 に答える