在Julia中旋转非位数组

时间:2017-01-07 02:50:57

标签: arrays julia

rol(a,1)上使用a=BitArray([true,true,false])会产生以下结果:

julia> rol(a,1)
3-element BitArray{1}:
true
false
true

如何旋转非位数组?例如,我有b=[1,2,3,4],并希望获得以下输出:[2,3,4,1]

2 个答案:

答案 0 :(得分:8)

您正在寻找circshift

julia> circshift([1,2,3,4], -1)
4-element Array{Int64,1}:
 2
 3
 4
 1

答案 1 :(得分:1)

根据接受的答案,

circshift做你想做的事。但是,只需添加到此,您还可以手动操作索引:

julia> a = [1,2,3,4];
julia> a[[2:end; 1]] |> show
  [2,3,4,1]
julia> a[[3:end; 1:2]] |> show
  [3,4,1,2]

事实上,你在这里做的是'线性''整数数组'索引,所以元素的数量可以超过4(即相同的位置可以多次访问或者完全没有):

julia> a[[3:end; 1:2; 1; 2; 2; 1]] |> show
  [3,4,1,2,1,2,2,1]

julia> a[[1:end; end-1:-1:1]] |> show
  [1,2,3,4,3,2,1]

这同样适用于更高维数组:

julia> b = [1 2 3 4; 2 3 4 5; 3 4 5 6; 4 5 6 7];
julia> b[[2:end; 1], [1:3; 2:end; 1]]
  4×7 Array{Int64,2}:
     2  3  4  3  4  5  2
     3  4  5  4  5  6  3
     4  5  6  5  6  7  4
     1  2  3  2  3  4  1