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

Julia中如何对CartesianIndex执行逐元素取最大值操作?

对CartesianIndex执行逐元素取最大值的方案

你的当前实现方式是正确的,能得到期望的CartesianIndex(5,4,8,4)结果。下面提供几种更简洁或更符合Julia习惯的解决方案:

1. 利用map简化写法

无需拆包操作,直接用map对两个索引的元组逐元素应用max,再传给CartesianIndex构造函数:

a = CartesianIndex(2,4,5,4)
b = CartesianIndex(5,2,8,1)
CartesianIndex(map(max, a.I, b.I))
# 输出:CartesianIndex(5, 4, 8, 4)

2. 定义广播版max方法(推荐常用场景)

如果需要频繁执行这类操作,可以给CartesianIndex扩展broadcasted版本的max方法,这样就能像普通向量一样用max.(a,b)的语法:

# 扩展方法
Base.broadcasted(::typeof(max), a::CartesianIndex, b::CartesianIndex) = CartesianIndex(max.(a.I, b.I)...)

# 使用示例
a = CartesianIndex(2,4,5,4)
b = CartesianIndex(5,2,8,1)
max.(a,b)
# 输出:CartesianIndex(5, 4, 8, 4)

关于原始写法的说明

你最初的实现CartesianIndex(max.(a.I,b.I)...)完全合理,本质是通过max.(a.I,b.I)生成逐元素取最大值的元组,再通过拆包...传递给构造函数,逻辑清晰且结果正确。

内容的提问来源于stack exchange,提问作者Sakurai.JJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:36:24