Эквивалент панды "клип" в Юлии - PullRequest
0 голосов
/ 09 мая 2018

В пандах есть функция clip (см. https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.clip.html),, которая ограничивает значения в пределах нижней и верхней границ, предоставляемых пользователем. Что такое эквивалент Джулии? Т.е. я хотел бы иметь:

> clip.([2 3 5 10],3,5)
> [3 3 5 5]

Очевидно, я могу написать сам или использовать комбинацию min и max, но я с удивлением обнаружил, что их нет. StatsBase предоставляет функции trim и winsor, но они не допускают использование фиксированных значений в качестве входных данных, а рассчитывают или процентили (https://juliastats.github.io/StatsBase.jl/stable/robust.html).

1 Ответ

0 голосов
/ 09 мая 2018

Вы, вероятно, ищете clamp:

help?> clamp

  clamp(x, lo, hi)

  Return x if lo <= x <= hi. If x > hi, return hi. If x < lo, return lo. Arguments are promoted to a common type.

Это функция для скаляра x, но мы можем транслировать ее по вектору с помощью точечной нотации:

julia> clamp.([2, 3, 5, 10], 3, 5)
4-element Array{Int64,1}:
 3
 3
 5
 5

Если вас не волнует исходный массив, вы также можете использовать версию на месте clamp!, которая изменяет ввод:

julia> A = [2, 3, 5, 10];

julia> clamp!(A, 3, 5);

julia> A
4-element Array{Int64,1}:
 3
 3
 5
 5
...