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中做到这一点?我不知道它的术语,让我知道这种转换的正确术语.
您正在寻找沿第一轴具有最大值的索引:
>>> 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首先过滤.这给出了一个数组True和False值.现在,使用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.
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |