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

如何在Julia中获取多维数组最深层每个元素的长度?

解决Julia中嵌套数组最深层长度提取问题

没问题!在Julia里处理这种存储连通分量的三层嵌套数组,提取每个最深层数组的长度(也就是每个连通分量的节点数)非常简单,用**广播(broadcasting)**或者map就能轻松实现。

具体实现方法

假设你的三层嵌套数组名为conn_groups(类型为n-element Array{Array{Array{Int64,1},1},1}),只需要一行代码就能得到你想要的结果:

component_lengths = length.(conn_groups)

如果你更喜欢可读性更强的map写法,也可以这样写:

component_lengths = map(group -> length.(group), conn_groups)

原理说明

  • 你的原始数组conn_groups的每个元素是一个存储多个连通分量的数组(第二层结构),比如示例中的元素1是1-element Array{Array{Int64,1},1},元素2是2-element Array{Array{Int64,1},1}。
  • length.(group)会对group中的每个最内层数组(单个连通分量)计算长度,返回一个对应长度的数组。
  • 最终的component_lengths会和原始数组的结构完全对应:每个位置对应原始数组的一个元素,里面是该元素下所有连通分量的长度列表。

示例验证

用你给出的示例构造测试数据:

# 构造测试数组
conn_groups = [
    [[1:150...]],  # 元素1:1个连通分量,长度150
    [[1:50...], [51:150...]]  # 元素2:2个连通分量,长度50和100
]

# 计算连通分量长度
component_lengths = length.(conn_groups)

运行后得到的component_lengths结果为:

2-element Vector{Vector{Int64}}:
 [150]
 [50, 100]

完全符合你期望的输出格式。

额外扩展

如果需要把所有连通分量的长度展平成一维数组(比如用于统计分量大小分布),可以用Iterators.flatten:

using Iterators  # 未导入时需先执行此语句
flat_lengths = collect(Iterators.flatten(component_lengths))
# 结果:[150, 50, 100]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:05:43