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

Julia中按分组选取Array数组每组前x行的高效实现方法

Julia 按分组筛选每组前x行的实现方案

你可以根据场景选择以下两种实现方式:

方法1:使用DataFrames包(简洁易读,优先推荐)

这是常规数据处理场景下最省心的写法,逻辑直观,后续修改需求也很方便:

using DataFrames

# 把原矩阵转为DataFrame,自动命名列
df = DataFrame(beg, :auto)
# 按第二列分组,每组取前2行,直接调整数字即可修改每组取数行数
res_df = combine(groupby(df, :x2), first => 2)
# 转回矩阵即得到目标结果
final = Matrix(res_df[:, [:x1, :x2]])

方法2:纯Base Julia实现(无额外依赖)

如果不想引入第三方包,可以用下面的通用写法,支持任意调整每组取数行数,性能也优于你当前的实现:

group_col = beg[:, 2]
take_n = 2  # 每组取前n行,按需修改即可
res_idx = Int[]

for g in unique(group_col)
    # 取当前组的前n个索引,直接追加到结果索引数组
    append!(res_idx, findall(==(g), group_col)[1:take_n])
end

final = beg[res_idx, :]

这个写法不需要额外排序,因为组的顺序和组内行的顺序都和原数组完全一致,避免了不必要的排序开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:54:05