如何像在Python中一样在Julia中拆分数组?

Zul*_*uky 0 arrays julia

我想做这个 :

a = [1,2,3,4,5]
print(a[:2])
Run Code Online (Sandbox Code Playgroud)

输出是

[1, 2]
Run Code Online (Sandbox Code Playgroud)

如何在Julia中做同样的事情?但是我a的类型是:Array {Array {Float64,1},1}

Bog*_*ski 5

假设您有:

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]
Run Code Online (Sandbox Code Playgroud)

(这等效于您上面编写的内容,但具有您要求的类型)。

您可以x通过传递切片的第一个和最后一个索引进行切片。上限和下限都将包括在内(还请注意,Julia使用基于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]
Run Code Online (Sandbox Code Playgroud)

您可以end用来指示收藏结束:

julia> x[3:end]
3-element Array{Array{Float64,1},1}:
 [3.0]
 [4.0]
 [5.0]
Run Code Online (Sandbox Code Playgroud)

以上操作创建了一个新向量。如果您更喜欢一个视图,请输入:

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]
Run Code Online (Sandbox Code Playgroud)

要么

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]
Run Code Online (Sandbox Code Playgroud)

区别在于使用@view宏仍可以使用end,例如@view x[2:end],但是view函数不支持它。