Python 2D Numpy数组到1D(有点......)

5Vo*_*lts 3 python arrays encoder numpy transformation

简单的问题,我想获得1D numpy数组.

给定一个2D数组,其中每行包含一个'1'值,如何将其转换为一维数组,由二维数组中的'1'的列索引组成

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

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

我怎么能在python中做到这一点?我不知道它的术语,让我知道这种转换的正确术语.

Mik*_*ler 5

您正在寻找沿第一轴具有最大值的索引:

>>> a.argmax(axis=1)
array([2, 2, 2, 1, 1, 1, 1, 0])
Run Code Online (Sandbox Code Playgroud)

a.argmax(axis=None, out=None)

返回给定轴上的最大值的索引.

如果其他值不一定小于1,则1首先过滤.这给出了一个数组TrueFalse值.现在,使用argmax():

>>> (a == 1).argmax(axis=1)
array([2, 2, 2, 1, 1, 1, 1, 0])
Run Code Online (Sandbox Code Playgroud)

True表现得像1和a False一样0,因为bool继承自int.