NumPy -将标签数组映射为二进制数组



我有一个标签数组,表示0-9之间的数字。我想把这个数组转换成一个二进制数组,这样数字就是value = 1的索引。

的例子:

labels = [1, 4, 9]
binary = [
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
]

我已经有一个迭代的解决方案,但我正在寻找一个NumPy解决方案。

一个简单快捷的方法:

>>> labels = [1, 4, 9]
>>> np.eye(10, dtype=int)[labels]
array([[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1]])