Python/Numpy - 将值在某个容差内设为目标值
如果我有一个数组,想把接近某个值的元素都设置成那个值,最好的方法是什么呢?我在想有没有numpy这个库里的函数可以做到这一点。如果没有这样的函数,那么下面的代码是不是“最好”的方法(也就是最快或者最有效率的方式)呢?这段代码也适用于多维数组。
代码:
from numpy import array
tol = 1e-5
# Some array with values close to 0 and 1
t = array([1.0e-10, -1.0e-10, 1.0+1.0e-10, 1.0-1.0e-10, 5.0])
print t[0], t[1], t[2], t[3], t[4]
# Set values within 'tol' of zero to zero
t[abs(t) < tol] = 0.
print t[0], t[1], t[2], t[3], t[4]
# Set values within 'tol' of some value to that value
val = 1.
t[abs(t-val) < tol] = val
print t[0], t[1], t[2], t[3], t[4]
2 个回答
3
这是一个链接,指向NumPy库中一个叫做“clip”的功能的文档。NumPy是一个用于科学计算的Python库,而“clip”这个功能的作用是限制数组中的数值范围。简单来说,就是把数组里的数值控制在一个指定的最小值和最大值之间。如果某个数值低于这个最小值,它就会被替换成最小值;如果高于最大值,就会被替换成最大值。你可以通过这个链接了解更多详细信息。
3
你想要实现的目标不是很清楚,但我理解的意思是,around 这个函数可能正好适合你的需求。