朱莉娅的滞后和领先

Geo*_*ery 2 julia

我想像这样转动一个数组

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

进入滞后版本

[missing,1,2,3,4] # lag 1
[missing,missing,1,2,3] # lag 2
Run Code Online (Sandbox Code Playgroud)

或 LED 版本

[2,3,4,5,missing] # lead 1
[3,4,5,missing,missing] # lead 2
Run Code Online (Sandbox Code Playgroud)

由于 Julia 是为科学计算而设计的,所以肯定有这样的东西,对吧?

Bil*_*ill 6

添加 ShiftedArrays。参见:https : //discourse.julialang.org/t/ann-shiftedarrays-and-support-for-shiftedarrays-in-groupederrors/9162

引用以上内容:

滞后,前导函数,用于移动数组并在数据不可用的情况下添加缺失(或最新尚未发布的版本中的自定义默认值),或用于以惰性(非分配)方式循环移动的 circshift:

julia> v = [1.2, 2.3, 3.4]
3-element Array{Float64,1}:
 1.2
 2.3
 3.4

julia> lag(v)
3-element ShiftedArrays.ShiftedArray{Float64,Missings.Missing,1,Array{Float64,1}}:
  missing
 1.2
 2.3
Run Code Online (Sandbox Code Playgroud)

请注意,滞后的 ShiftedArray 版本使数组大小保持不变。您可以添加一个简短的函数,使其按照您的要求运行:

biglag(v, n) = lag(vcat(v, v[1:n]), n)
Run Code Online (Sandbox Code Playgroud)