如何用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
相关产品推荐
相关产品推荐

