Как разделить массив в Юлии как в Python? - PullRequest
0 голосов
/ 13 марта 2019

Я хочу сделать это:

a = [1,2,3,4,5]
print(a[:2])

Вывод

[1, 2]

Как я могу делать то же самое в Джулии?Но мой a имеет тип: Array {Array {Float64,1}, 1}

1 Ответ

4 голосов
/ 13 марта 2019

Предположим, у вас есть:

julia> x = [[i] for i in 1.0:5.0]
5-element Array{Array{Float64,1},1}:
 [1.0]
 [2.0]
 [3.0]
 [4.0]
 [5.0]

(это эквивалент того, что вы написали выше, но с типами, которые вы запрашиваете).

Вы можете нарезать x, передав первыйи последний индекс среза.Нижняя и верхняя границы будут включены (также обратите внимание, что Юлия использует индексирование на основе 1):

julia> x[1:2]
2-element Array{Array{Float64,1},1}:
 [1.0]
 [2.0]

julia> x[2:4]
3-element Array{Array{Float64,1},1}:
 [2.0]
 [3.0]
 [4.0]

Вы можете использовать end, чтобы указать конец вашей коллекции:

julia> x[3:end]
3-element Array{Array{Float64,1},1}:
 [3.0]
 [4.0]
 [5.0]

Вышеуказанные операции создали новый вектор.Если вы предпочитаете иметь представление, напишите:

julia> @view x[2:4]
3-element view(::Array{Array{Float64,1},1}, 2:4) with eltype Array{Float64,1}:
 [2.0]
 [3.0]
 [4.0]

или

julia> view(x, 2:4)
3-element view(::Array{Array{Float64,1},1}, 2:4) with eltype Array{Float64,1}:
 [2.0]
 [3.0]
 [4.0]

Разница в том, что с макросом @view вы все равно можете использовать end, например @view x[2:end], но функция view не поддерживает ее.

...