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

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

输出
-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

最佳答案

我通常为此使用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

关于arrays - 如何在Julia中索引循环数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59435965/

10-12 22:07