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

如何将shape为(1988,3)的NumPy数组转为对应1所在列索引的1D数组?

解决方法

可以通过以下步骤实现需求:

  1. 先创建一个与原数组行数相同、元素全为NaN的一维数组;
  2. 找出原数组中值为1的元素所在的行和列索引;
  3. 将对应行的位置赋值为列索引即可。

具体代码实现:

import numpy as np

# 假设preds是你的shape=(1988,3)的numpy数组
preds = np.array([[1, 0, 0],
                  [0, 1, 0],
                  [0, 0, 0],
                  [0, 1, 0],
                  [1, 0, 0],
                  [0, 0, 1]])

# 初始化全为NaN的结果数组
new_preds = np.full(preds.shape[0], np.nan)

# 获取所有值为1的元素的行和列索引
target_rows, target_cols = np.where(preds == 1)

# 给结果数组对应位置赋值
new_preds[target_rows] = target_cols

print(new_preds)
# 输出:[ 0.  1. nan  1.  0.  2.]

补充说明

如果原数组中存在某一行有多个1的情况,np.where会返回所有对应的行和列索引,此时new_preds中对应行的最后一个赋值会覆盖之前的。如果需要处理这种场景,可以根据实际需求调整逻辑(比如取第一个出现的1的索引)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:50:24