Julia 获取OffsetArray的左上角索引
我有以下Julia 获取OffsetArray的左上角索引,julia,offset,Julia,Offset,我有以下OffsetArray: julia> off = OffsetArray(rand(5, 5), -3, -3) 5×5 OffsetArray(::Matrix{Float64}, -2:2, -2:2) with eltype Float64 with indices -2:2×-2:2: 0.515173 0.861326 0.349478 0.970478 0.255713 0.862617 0.47006 0.707166 0.938883 0
OffsetArray
:
julia> off = OffsetArray(rand(5, 5), -3, -3)
5×5 OffsetArray(::Matrix{Float64}, -2:2, -2:2) with eltype Float64 with indices -2:2×-2:2:
0.515173 0.861326 0.349478 0.970478 0.255713
0.862617 0.47006 0.707166 0.938883 0.331716
0.512007 0.0325946 0.553909 0.569638 0.510056
0.941383 0.351381 0.35792 0.482246 0.439157
0.887686 0.413278 0.527105 0.782516 0.976842
我希望以编程方式提取左上角元素的索引,在本例中,索引为(-2,-2)
现在我正在做这件事
topleft = off |> axes |> CartesianIndices |> first |> ind -> ind.I
对我来说,这似乎是一种过度的杀伤力,但我找不到任何其他的选择
有更直接的方法吗?我通常会使用
firstindex
:
julia> firstindex(off, 1)
-2
其中,第二个参数是要获取其第一个索引的维度
要获得(-2,-2)
元组,您可以编写以下代码:
julia> firstindex.(Ref(off), (1, 2))
(-2, -2)
从未见过
Ref
的这种用法,感谢您提供了有用的答案Ref
是保护收藏不被广播的标准方法,请参阅中的广播评论和示例。您可以将编写的内容缩短到CartesianIndices(off)[1]。I
,或者off |>CartesianIndices |>first |>Tuple
如果您愿意的话。不需要轴
,也不需要定义自己的函数来转换为元组。@mcabbott这是一个很好的附加项,谢谢。朱莉娅对我来说有点陌生,所以有些过度设计的情况发生了:)