我正在尝试限制 numpy 数组的值,以便没有值位于 -0.5 和 0.5 之间。因此,如果我有一个形状为 (6,2) 的数组,其值如下:
array([[ 0.49873803, -1.66316398],
[ -0.36091764, 2.0635736 ],
[ -1.09922111, -2.49380792],
[ 0.92724579, -5.19540319],
[ 1.49726584, -0.22718924],
[ 60. , 60. ]])
如何让 numpy 将 -0.5 -> 0.0 的值更改为 -0.5,以及 从 0.5 -> 0.0 到 0.5,这样示例数组将是:
array([[ 0.5, -1.66316398],
[ -0.5, 2.0635736 ],
[ -1.09922111, -2.49380792],
[ 0.92724579, -5.19540319],
[ 1.49726584, -0.5],
[ 60. , 60. ]])
我试过使用 np.clip 但没有用,或者我无法弄清楚,所以我来了!
最佳答案
对于你的 a
只需运行:
a[( 0. <= a) & (a < 0.5)] = 0.5
a[(-0.5 < a) & (a < 0. )] = -0.5
或者简单地说:
np.putmask(a, np.abs(a) < .5, np.sign(a) * .5)
可以根据您的需要调整第一个以处理 0.
。第二个将其保留为 0。
关于python - 限制数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10949474/