如何在 Julia 中索引圆形数组?

Tom*_*Tom 5 arrays indexing julia

我想以循环方式访问数组中的元素。通常模数就足够了,但在 Julia 数组中从 1 开始。目前我基本上将索引转换为基于 0 的索引并返回。但这不适用于负指数。

A = 1:5
for i in -6:6
    println(i, " -> ", ((i - 1) % length(A)) + 1)
end
Run Code Online (Sandbox Code Playgroud)

输出

-6 -> -1 # wrong
-5 ->  0 # wrong
-4 ->  1 # wrong
-3 -> -3 # wrong
-2 -> -2 # wrong
-1 -> -1 # wrong
 0 ->  0 # wrong
 1 ->  1
 2 ->  2
 3 ->  3
 4 ->  4
 5 ->  5
 6 ->  1
Run Code Online (Sandbox Code Playgroud)

Bog*_*ski 9

我通常mod1为此使用函数。下面是一个例子:

julia> [-10:10 mod1.(-10:10, 5)]
21×2 Array{Int64,2}:
 -10  5
  -9  1
  -8  2
  -7  3
  -6  4
  -5  5
  -4  1
  -3  2
  -2  3
  -1  4
   0  5
   1  1
   2  2
   3  3
   4  4
   5  5
   6  1
   7  2
   8  3
   9  4
  10  5
Run Code Online (Sandbox Code Playgroud)