Numpy将10个基数转换为10大小数组中的位标志



我有0-9范围内的numpy数字数组,我想将这些数字转换为所述数字索引中的"flag"。以下代码正是我想要的:

In [1]: import numpy as np
In [2]: a = np.array([5, 2, 7])
In [3]: b = np.zeros((3, 10))
In [4]: for i in range(a.shape[0]):
...:     b[i][a[i]] = 1
...:
In [5]: b
Out[5]:
array([[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]])

但我想知道这种转换叫什么,有没有一种愚蠢的方法可以做到这一点?

尝试使用np.arange:

b[np.arange(a.shape[0]), a] = 1

最新更新