Функция map
может принимать многомерную функцию и применять ее к нескольким массивам.Таким образом, вы можете применить свою функцию к правильно смещенным версиям вашего массива:
julia> A = [3, 6, 9, 36];
julia> map((x, y) -> x % y == 0, A[2:end], A[1:end-1])
3-element Array{Bool,1}:
true
false
true
Пакет ShiftedArrays.jl предоставляет функции lead
и lag
, чтобы сделать смещение массивов более удобным:
julia> using ShiftedArrays
julia> lag(A)
4-element ShiftedArray{Int64,Missing,1,Array{Int64,1}}:
missing
3
6
9
julia> map((x, x_lag) -> x % x_lag == 0, A, lag(A))
4-element Array{Union{Missing, Bool},1}:
missing
true
false
true
Обратите внимание, что lag
вводит значение missing
в начале смещенного массива.Если вы хотите убедиться, что ваша функция возвращает true
для первого элемента массива, вы можете изменить его следующим образом:
julia> map((x, y) -> ismissing(y) ? true : x % y == 0, A, lag(A))
4-element Array{Bool,1}:
true
true
false
true