在 KDB/Q 中,如何将数字限制在 -1、1 范围内?
In KDB/Q, how do I clip numbers to be in the range -1, 1?
我正在尝试做相当于 Python 的 np.clip
的 KDB Q,因此 -1 < x < 1
范围内的浮点数被 returned,而数字在外面此范围 return 分别为 -1 和 1。
函数:
clip:{[b1;b2;x] ?[null x;abs[type x][=10=]n;b1|x&b2]}
应该是你要找的功能
所以你现在只需要申请
clip[-1;1;]
到您想要的任何列表。
您可以很容易地使用嵌套的 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
这是另一个,只是为了添加到列表中
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
我正在尝试做相当于 Python 的 np.clip
的 KDB Q,因此 -1 < x < 1
范围内的浮点数被 returned,而数字在外面此范围 return 分别为 -1 和 1。
函数:
clip:{[b1;b2;x] ?[null x;abs[type x][=10=]n;b1|x&b2]}
应该是你要找的功能
所以你现在只需要申请
clip[-1;1;]
到您想要的任何列表。
您可以很容易地使用嵌套的 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
这是另一个,只是为了添加到列表中
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