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

MATLAB实现Python中自定义对象数组的argmax功能方法

在MATLAB中实现类似Python的argmax提取对象属性最大值索引

嘿,这个需求在MATLAB里其实有两种很简洁的实现方式,完全对应你Python代码的功能:

方法一:直接利用对象数组的属性批量访问(最简洁)

因为你创建的bandits是对象数组(不是cell数组),MATLAB支持对对象数组直接批量访问属性,一步就能提取所有mean_value:

% 提取所有bandit对象的mean_value到数值数组
mean_values = [bandits.mean_value];
% 获取最大值对应的索引,~表示忽略最大值本身的输出
[~, j] = max(mean_values);

这个方法和你Python里[b.mean for b in bandits]的逻辑完全一致,然后用max函数的第二个输出参数得到索引,和np.argmax的效果相同。

方法二:用arrayfun遍历提取(更通用,适用于cell数组或复杂逻辑)

如果你的bandits是cell数组(比如bandits = {Bandit(m1), Bandit(m2), Bandit(m3)}),或者需要对属性做额外处理,可以用arrayfun来遍历:

% 遍历每个元素,提取mean_value
mean_values = arrayfun(@(b) b.mean_value, bandits);
[~, j] = max(mean_values);

这里的匿名函数@(b) b.mean_value会逐个处理bandits里的对象,把属性值收集成数组,后续步骤和方法一一样。

注意点

如果有多个mean_value同为最大值,MATLAB的max会返回第一个出现的索引,这和numpy.argmax的默认行为是一致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:55:33