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

如何对列表中每组5个softmax数组逐元素相乘后求argmax

实现方案

你可以直接用NumPy完成所有操作,以下是两种可选实现:

前置依赖

导入NumPy库即可:

import numpy as np

你已经生成初始列表vals_pred的代码如下:

vals_pred = [res.iloc[i]['y_pred'][0:5] for i in range(len(res))
             if len(res.iloc[i]['y_pred']) > lookahead]

方案1:直接计算逐元素乘积

直接对每个元素内的5个softmax数组沿第一个维度做乘积,再取argmax即可:

# 仅获取最终argmax结果
argmax_result = [np.argmax(np.prod(arr, axis=0)) for arr in vals_pred]

# 如果需要保留中间乘积结果,可以拆分步骤
prod_arr_list = [np.prod(arr, axis=0) for arr in vals_pred]
argmax_result = [np.argmax(prod_arr) for prod_arr in prod_arr_list]

该方案逻辑直观,但多个极小的softmax值相乘容易出现浮点下溢,导致结果精度下降。

方案2:对数域计算(更推荐)

由于对数函数是单调递增函数,乘积的argmax等价于对数和的argmax,在对数域计算可以完全避免下溢问题,结果更稳定:

argmax_result = [np.argmax(np.sum(np.log(arr), axis=0)) for arr in vals_pred]

该方案不需要显式计算乘积,计算效率和精度都优于直接相乘的方案。

结果验证

针对你给出的示例输入,两种方案输出的结果都是[2, 6],和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:24:02