python - 限制数组的值

标签 python numpy

我正在尝试限制 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/

相关文章:

python - Django 中的应用程序和项目

python - 将文本文件导入为 numpy 中的矩阵

python - 根据日期合并(numpy)数组

python - 评估 TensorFlow 张量时执行卡住

python - 使用 Python 从 URL 下载 .mp4 的子剪辑

python - 如何根据文本文件创建字典?

python - 看门狗模块不通知目录重命名?

python - 如何在 Django ORM 中使用 PostGIS 聚合函数 ST_AsMVT

Python、numpy、矩阵

python - numpy.genfromtxt 跳过/忽略长 tsv 文件中的最后一行