首页 > 解决方案 > 如何像在 Python 中一样在 Julia 中拆分数组?

问题描述

我想做这个 :

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

输出是

[1, 2]

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

标签: arraysjulia

解决方案


假设你有:

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函数不支持它。


推荐阅读