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

如何在shape为(50,2)的np数组每行最小值索引处插入二进制1

你可以直接使用NumPy内置的向量化方法完成需求,比原有循环实现效率更高,同时行为和你原来的逻辑完全一致:

最优实现(无循环,适合大规模数组)

import numpy as np

# 替换为你自己shape为(50,2)的np数组
input_arr = np.array([[2,4], [5,3]])

# 按行计算最小值对应的索引,axis=1指定按行维度计算
min_row_index = input_arr.argmin(axis=1)

# 初始化和输入数组形状一致的全0数组
result = np.zeros_like(input_arr)
# 给每行最小值对应位置赋值为1
result[np.arange(len(input_arr)), min_row_index] = 1

运行后result的输出即为你需要的0-1数组:

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

兼容你原有循环逻辑的实现

如果需要沿用你原来的循环写法,可参考如下代码:

import numpy as np

input_arr = np.array([[2,4], [5,3]])
result = []
for row in input_arr:
    # 原有获取最小值索引的逻辑
    min_pos = list(row).index(min(row))
    # 生成当前行的0-1数组
    cur_row = [0] * row.shape[0]
    cur_row[min_pos] = 1
    result.append(cur_row)

# 若需要输出为np数组,可添加下方代码
# result = np.array(result)

注:如果某行存在多个相等的最小值,两种实现都会取第一个出现的最小值位置设为1,和你原有逻辑的行为一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:15:06