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

如何批量提取DataFrame数组列中每个3D数组的指定元素?

提取DataFrame中3D数组列的指定位置元素

简洁解决方案

广播索引法(推荐)

直接对var3列的每个数组元素进行广播索引,这是Julia中最简洁高效的方式:

# 生成目标向量
getindex.(df.var3, 2, 1, 1)

或者用推导式写法:

[x[2, 1, 1] for x in df.var3]

两种写法都会输出[3, 3, 3],完全符合需求。

Map遍历法

通过map函数遍历列中的每个数组,提取指定位置的值:

map(x -> x[2, 1, 1], df.var3)

扩展:将结果添加到DataFrame中

如果需要把提取的结果作为新列保留在DataFrame里,可以用transform结合ByRow:

transform(df, :var3 => ByRow(x -> x[2, 1, 1]) => :extracted_value)

执行后会新增一列:extracted_value,每行对应var3列数组的(2,1,1)位置元素。

为什么你的尝试未生效?

你使用的df[:,3][1:3][2,1,1]是对数组的集合进行多维索引,而非对集合内的每个数组单独索引。df[:,3][1:3]得到的是包含3个3D数组的向量,后续的[2,1,1]会被Julia解析为对这个向量的多维索引(而非遍历每个数组),所以无法得到预期的向量结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:17:06