Python/Numpy - 将值在某个容差内设为目标值

4 投票
2 回答
13710 浏览
提问于 2025-04-16 13:17

如果我有一个数组,想把接近某个值的元素都设置成那个值,最好的方法是什么呢?我在想有没有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 这个函数可能正好适合你的需求。

撰写回答