假设有一个数组
a
,我想要获取每隔一个元素。使用numpy
,我会使用a[::2]
。在Julia中,我该如何做到相同的效果?在Julia中,选择元素的方式类似于Python,使用start:stop[:step]
。但是在Julia中,语法为start:[step:]stop
,因此如果给出了所有三个参数,则step
和stop
的含义相反。有关:
或colon
的详细信息,请参见docs。
例如:
julia> a = randn(20);
julia> a[1:2:end]
10-element Vector{Float64}:
...
julia> a[begin:2:end] # equivalent for default one-based indexing
10-element Vector{Float64}:
...
julia> a[1:5:end]
4-element Vector{Float64}:
...
但是在Julia中忽略边界不会像Python一样奏效,因为:
在Julia中有多种含义。
julia> a[::2]
ERROR: syntax: invalid "::" syntax
julia> a[:2:]
ERROR: syntax: missing last argument in ":(2):" range expression
julia> a[2::]
ERROR: syntax: unexpected "]"
julia> a[:2:end] # `:2` is a `Symbol` and evaluates to `2`, so start from 2nd element
19-element Vector{Float64}:
...
:
/冒号文档的链接已经移至此处:https://docs.julialang.org/en/v1/base/math/#Base.:: - Olsgaardbegin
。 - Oscar Smith