我想像这样转动一个数组
[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 是为科学计算而设计的,所以肯定有这样的东西,对吧?
添加 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)