2017-01-07 3 views
7

Использование 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].

ответ

8

вы ищете circshift:

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

Это вероятно, хороший кандидат на консолидацию API, поскольку эти функции настолько похожи. – StefanKarpinski

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 
+0

Это не то, что обычно называют линейным индексированием - это когда вы используете один индекс для охвата нескольких измерений. –

+0

Спасибо @MattB. какова предпочтительная терминология для этого в Джулии? Я заимствовал термин из matlab, где это то, что они называют (в matlab это ссылка на matlab, являющуюся основным по порядку столбца, но я полагаю, что Julia, являющаяся основным порядком столбца, тоже не означает, что он должен использовать тот же термин). Я знаю, что python называет это «целочисленным индексированием». –

+0

@MattB. hm, документы julia, похоже, также называют его линейным индексированием http://docs.julialang.org/en/stable/devdocs/subarrays/. Вы имеете в виду что-то другое? –

 Смежные вопросы

  • Нет связанных вопросов^_^