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这是一个很好的附加项,谢谢。朱莉娅对我来说有点陌生,所以有些过度设计的情况发生了:)