Фильтровать массив массивов в Julia с помощью простой команды - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть массив из двух массивов, подобных этому

x = [[1.5, 2.5], [3.5, 4.5]]

, где два внутренних массива всегда имеют одинаковую длину.

Я хочу применить фильтр впопарноПары в приведенном выше примере будут [1.5, 3.5] и [2.5, 4.5].Критерий фильтра должен состоять в том, чтобы выбрать пару, если оба элемента больше критического значения, скажем 2. Результат должен быть снова в исходном виде, то есть

result = [[2.5],[4.5]]

Другой примербудет

x = [[1.5, 2.5, 3.5], [4.5, 5.5, 6.5]] -> result = [[2.5, 3.5], [5.5, 6.5]].

Как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Чтобы сохранить любой, кроме первого элемента

julia> x = [[1.5, 2.5, 3.5], [4.5, 5.5, 6.5]];

julia> (x->x[2:end]).(x)
2-element Array{Array{Float64,1},1}:
 [2.5, 3.5]
 [5.5, 6.5]
0 голосов
/ 18 сентября 2018

Позвольте мне прямо.Как и ожидалось, я хочу фильтровать из 2-элементного массива {Array {Float64,1}, 1} с критическим значением.Например, мое критическое значение 2 для x [1].И мой вклад х = [[1.5,2.5,3.5,0.5], [3,4,5,6]].Мой ожидаемый результат должен быть x = [[2.5, 3.5], [4,5]].Ребята, вам понятно?

0 голосов
/ 17 сентября 2018

Как бы угадать точный критерий фильтра, один из вариантов будет

julia> using SplitApplyCombine

julia> x = [[1.5, 2.5, 3.5], [4.5, 5.5, 6.5]];

julia> invert(filter(y->y[1]>2&&y[2]>2, invert(x)))
2-element Array{Array{Float64,1},1}:
 [2.5, 3.5]
 [5.5, 6.5]

Не то чтобы метод invert определен во внешнем пакете SplitApplyCombine.jl , который вы должны добавить первым (] add SplitApplyCombine).

Однако прямая реализация цикла for также будет работать и, вероятно, будет быстрее.

...