在pandas中,有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)。
答案 0 :(得分:7)
您可能正在寻找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