Julia数组索引集缩写:如何用简洁方式截取匹配尺寸的子数组?
Julia中按另一个矩阵尺寸截取子矩阵的简洁写法
针对你提出的需求,有两种简洁的写法可以替代A[1:size(B)[1],1:size(B)[2]]:
方法1:使用axes(B)配合展开操作符
axes(B)会返回矩阵B各维度的索引范围,对于2×2的B,它返回(1:2, 1:2)。通过展开操作符...将这个元组拆分为独立的索引参数,直接用于A的索引:
A[axes(B)...]
示例验证:
julia> A = ones(Float64,3,3) 3×3 Matrix{Float64}: 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 julia> B = ones(Float64,2,2) 2×2 Matrix{Float64}: 1.0 1.0 1.0 1.0 julia> A[axes(B)...] 2×2 Matrix{Float64}: 1.0 1.0 1.0 1.0
方法2:直接指定维度的size调用
相比size(B)[1],更简洁的写法是用size(B, dim)直接获取第dim维的尺寸,代码如下:
A[1:size(B,1), 1:size(B,2)]
这种写法更直观,明确指定要获取B的第1维和第2维尺寸,示例运行结果和方法1一致。
内容的提问来源于stack exchange,提问作者phinz
相关产品推荐
相关产品推荐

