3
我目前有一個數組中的最小值的索引數組。1在索引位置的數組
它看起來是這樣的:
[[0],
[1],
[2],
[1],
[0]]
(最高指數爲3)
我要的是一個數組,看起來像這樣:
[[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]]
凡1在最小的一欄中。
有沒有一種簡單的方法在numpy中做到這一點?
我目前有一個數組中的最小值的索引數組。1在索引位置的數組
它看起來是這樣的:
[[0],
[1],
[2],
[1],
[0]]
(最高指數爲3)
我要的是一個數組,看起來像這樣:
[[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
[0, 1, 0]
[1, 0, 0]]
凡1在最小的一欄中。
有沒有一種簡單的方法在numpy中做到這一點?
的==
使用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]])
的列表,你可以做
>>> a = [[0], [1], [2], [1], [0]]
>>> N = 3
>>> [[1 if x[0] == i else 0 for i in range(N)] for x in a]
[[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0]]