从一维数组的索引和值构造二维numpy数组

cd9*_*d98 7 python numpy

说我有

Y = np.array([2, 0, 1, 1])
Run Code Online (Sandbox Code Playgroud)

由此我想获得与形状的矩阵X (len(Y), 3).在这种特殊情况下,X的第一行应该在第二个索引上有一个,而在其他情况下为零.X的第二行应该在0索引上有一个,否则为零.要明确:

X = np.array([[0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

我该如何制作这个矩阵?我开始了

X = np.zeros((Y.shape[0], 3))
Run Code Online (Sandbox Code Playgroud)

但后来无法弄清楚如何填充/填写索引列表中的那些

一如既往,谢谢你的时间!

DSM*_*DSM 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.]])
Run Code Online (Sandbox Code Playgroud)