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

时间:2019-03-13 09:33:50

标签: arrays julia

我想这样做:

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

输出为

[1, 2]

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

1 个答案:

答案 0 :(得分:4)

假设您拥有:

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。上限和下限都将包括在内(还请注意,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]

您可以使用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函数不支持。