【问题标题】:In KDB/Q, how do I clip numbers to be in the range -1, 1?在 KDB/Q 中,如何将数字剪辑到 -1、1 范围内?
【发布时间】:2021-07-19 13:18:27
【问题描述】:

我正在尝试做与 Python 的 np.clip 等效的 KDB Q,因此返回范围 -1 < x < 1 中的浮点数,并且此范围之外的数字分别返回 -1 和 1。

【问题讨论】:

    标签: kdb


    【解决方案1】:

    这是另一个,只是为了添加到列表中

    q)clip: {-1 | 1 & 0f ^ x}
    q)clip -2 -1 -0.5 0 0.5 1 2 0N 0n
    -1 -1 -0.5 0 0.5 1 1 0 0
    

    【讨论】:

    • 这一定是赢家,非常优雅的解决方案。非常感谢! :)
    【解决方案2】:

    功能:

    clip:{[b1;b2;x] ?[null x;abs[type x]$0n;b1|x&b2]}

    应该是你要找的功能。

    所以你现在只需要申请

    clip[-1;1;]

    到您想要的任何列表。

    【讨论】:

      【解决方案3】:

      您可以很容易地使用嵌套的vector conditional 自己定义它:

      q)clip:{?[x<-1;-1;?[x>1;1;x]]}
      q)l:(neg 2) + 10?4.0
      q)l
      0.4812058 1.730526 -0.9011735 -1.769899 -0.9757369 -1.075957 -1.651039 -1.590227 1.468439 0.911411
      q)clip l
      0.4812058 1 -0.9011735 -1 -0.9757369 -1 -1 -1 1 0.911411
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-01
        • 2017-11-28
        • 1970-01-01
        • 1970-01-01
        • 2018-11-29
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        相关资源
        最近更新 更多