小能豆

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

py

说我有

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

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

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

我如何生成这个矩阵?我首先

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

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


阅读 10

收藏
2024-10-28

共1个答案

小能豆

>>> 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.]])
2024-10-28