Python Numpy One Hot to Regions

2019-02-25 15:04发布

问题:

What is the best way to make this One Hot encoded matrix

array([[[1, 0, 0],
        [1, 0, 0],
        [0, 1, 0]],

       [[0, 0, 1],
        [0, 1, 0],
        [1, 0, 0]]])

as

array([[0, 0, 1],
       [2, 1, 0]])

In other words, how to decode One Hot array?

回答1:

Use np.argmax along axis=2 -

a.argmax(2)

Sample run -

In [186]: a
Out[186]: 
array([[[1, 0, 0],
        [1, 0, 0],
        [0, 1, 0]],

       [[0, 0, 1],
        [0, 1, 0],
        [1, 0, 0]]])

In [187]: a.argmax(2)
Out[187]: 
array([[0, 0, 1],
       [2, 1, 0]])