使用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]
。
使用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]
。
你正在寻找circshift
:
julia> circshift([1,2,3,4], -1)
4-element Array{Int64,1}:
2
3
4
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
这不是通常所说的线性索引 - 即当您使用一个索引跨越多个维度时。 –
谢谢@MattB。那么朱莉娅对此的首选术语是什么?我从matlab中借用了术语,这就是他们所说的(在matlab中,这是对matlab的引用,是列主要顺序,但我认为Julia是列主要顺序也并不意味着它应该使用相同的术语)。我知道Python调用这个“整数索引”。 –
@MattB。 hm,julia文档似乎也称之为线性索引http://docs.julialang.org/en/stable/devdocs/subarrays/。你指的是不同的东西吗? –
这是因为这些功能非常相似,所以可能是API整合的一个好候选。 – StefanKarpinski