Отставание и лидерство в юли - PullRequest
2 голосов
/ 09 марта 2020

Я хочу превратить массив, подобный этому,

[1,2,3,4,5]

в версию с задержкой

[missing,1,2,3,4] # lag 1
[missing,missing,1,2,3] # lag 2

или в светодиодную версию

[2,3,4,5,missing] # lead 1
[3,4,5,missing,missing] # lead 2

По замыслу Джулии для научных c вычислений должно быть что-то вроде этого, верно?

1 Ответ

6 голосов
/ 09 марта 2020

Добавить ShiftedArrays. См .: https://discourse.julialang.org/t/ann-shiftedarrays-and-support-for-shiftedarrays-in-groupederrors/9162

Цитирование из вышеприведенного:

отставание, опережающие функции, сдвиг массива и добавление пропущенных (или пользовательское значение по умолчанию в последнем не пока не выпущенная версия), где данные недоступны или циклическое смещение для кругового смещения ленивым (не выделяющим) способом:

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

Обратите внимание, что версия задержки ShiftedArray сохраняет размер массива одинаковым. Вы можете добавить короткую функцию, чтобы она велась так, как вы просили:

biglag(v, n) = lag(vcat(v, v[1:n]), n)
...