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

如何在R中查找列表内数组最大值对应的i、j、k维度索引

你调用which.max得到的单个数值是数组扁平化后的线性索引,可以通过以下两种方法快速得到你需要的三维坐标:

方法1:高效取第一个最大值的坐标(推荐大数据量使用)

which.max只会遍历一次数组返回第一个最大值的线性索引,再用arrayInd直接转换为多维坐标,性能更高:

# 取最大值的线性索引
max_linear_idx <- which.max(All$Data)
# 转换为三维坐标
max_pos <- arrayInd(max_linear_idx, .dim = dim(All$Data), useNames = FALSE)
# 转为向量输出,格式正好是 [切片序号, 行号, 列号]
print(as.vector(max_pos))

针对你给出的示例数据,输出结果为 [1] 12 256 208,也就是第12个切片的256行208列的位置。

方法2:直接获取所有最大值的坐标

如果数组中存在多个相同的最大值,需要返回所有位置,可以用which搭配arr.ind = TRUE实现:

# 返回所有最大值的三维坐标,每一行对应一个位置
all_max_pos <- which(All$Data == max(All$Data), arr.ind = TRUE, useNames = FALSE)
print(all_max_pos)

注意:R数组的维度顺序和你定义时的顺序完全一致,你的All$Data定义时维度为c(12,256,512),所以返回的坐标顺序默认就是「切片序号-行号-列号」,符合你需要的输出格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:57:03