You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中将多列二维数组转单列 输出每行1所在列号的方法

NumPy one-hot数组转列索引实现

你给出的数组是典型的one-hot编码格式,每行有且仅有一个值为1的元素,其余为0,直接用NumPy内置方法即可高效完成转换,无需手写循环。


最简实现(适配你的示例场景)

使用np.argmax沿行方向取最大值位置,因为每行最大值固定为1,返回结果就是1对应的列编号:

import numpy as np

# 输入的原始10×3数组
arr = np.array([[0., 0., 1.],
                [0., 0., 1.],
                [0., 0., 1.],
                [0., 0., 1.],
                [0., 1., 0.],
                [0., 1., 0.],
                [1., 0., 0.],
                [1., 0., 0.],
                [1., 0., 0.],
                [1., 0., 0.]])

result = np.argmax(arr, axis=1)

执行后得到的result和你给出的期望输出完全一致:

print(result)
# [2 2 2 2 1 1 0 0 0 0]
print(result.dtype)
# int64

兼容写法(适配行内存在多个1的场景)

如果你的数据可能出现某行有多个1的情况,可以用np.where筛选出所有值为1的位置,取列索引即可:

result = np.where(arr == 1)[1]

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:48:36