索引位置的1的数组

jgi*_*ist 3 python numpy matrix scipy

我目前有一个数组中最小值的索引数组.

它看起来像这样:

[[0],
 [1],
 [2],
 [1],
 [0]]
Run Code Online (Sandbox Code Playgroud)

(最大指数为3)

我想要的是一个如下所示的数组:

[[1, 0, 0]
 [0, 1, 0]
 [0, 0, 1]
 [0, 1, 0]
 [1, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

1在最小列中.

在numpy中有一个简单的方法吗?

Fre*_*Foo 6

使用NumPy的广播==:

>>> minima = np.array([[0], [1], [2], [1], [0]])
>>> minima == arange(minima.max() + 1)
array([[ True, False, False],
       [False,  True, False],
       [False, False,  True],
       [False,  True, False],
       [ True, False, False]], dtype=bool)
>>> (minima == arange(minima.max() + 1)).astype(int)
array([[1, 0, 0],
       [0, 1, 0],
       [0, 0, 1],
       [0, 1, 0],
       [1, 0, 0]])
Run Code Online (Sandbox Code Playgroud)