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

如何用Julia标准函数基于矩阵切片生成重复值矩阵

Julia 重复矩阵行的正确实现方法

现有如下2×3的Matrix{Int64}:

julia> mat=[1 2 3;4 5 6]
2×3 Matrix{Int64}:
 1  2  3
 4  5  6

需要生成一个4×3的矩阵,每行均为该矩阵的切片mat[1, :],预期结果如下:

4×3 Matrix{Int64}:
 1  2  3
 1  2  3
 1  2  3
 1  2  3

可行实现方法

  • 方法1:利用repeat的outer参数
    先将行向量转为二维矩阵(或转置),再通过outer指定行维度重复4次:

    # 转置行向量后重复
    repeat(mat[1, :]', outer=(4, 1))
    
    # 或者用reshape转为二维矩阵
    repeat(reshape(mat[1, :], 1, :), outer=(4, 1))
    
  • 方法2:vcat拼接行向量
    用fill生成包含4个目标行向量的数组,再通过vcat展开拼接:

    vcat(fill(mat[1, :], 4)...)
    
  • 方法3:广播赋值
    先初始化同类型的目标矩阵,再通过广播将行向量赋值给每一行:

    result = similar(mat, 4, 3)
    result .= mat[1, :]
    

为什么之前的方法失效?

  • fill(mat[1, :], 4,3):生成的是4×3 Matrix{Vector{Int64}},每个元素都是原行向量,并非预期的数值型矩阵。
  • repeat(mat[1, :], inner=(4,1)):会将行向量的每个元素在 row 方向重复4次,最终得到12×1的向量,不符合4×3的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:25:38