相当于朱莉娅的熊猫'剪辑'

时间:2018-05-09 05:59:31

标签: julia

在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]

显然,我可以自己编写,或者使用minmax的组合,但我很惊讶地发现没有。 StatsBase提供trimwinsor函数,但这些函数不允许将固定值作为输入,而是计数或百分位数(https://juliastats.github.io/StatsBase.jl/stable/robust.html)。

1 个答案:

答案 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