【问题标题】:Python/Numpy - Set Values within some Tolerance to the ValuePython/Numpy - 在对值的一些容差范围内设置值
【发布时间】:2011-03-08 18:47:55
【问题描述】:

如果我有一个数组并且我想将值设置为“接近”某个值作为该值,那么最好的方法是什么?我想知道它们是否是一个 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]

【问题讨论】:

标签: python numpy


【解决方案1】:

您想要达到的目标不是很清楚,但我的解释是 around 是您的情况的解决方案。

【讨论】:

  • 这可能是最接近我想要的。但是,它并不总是做完全相同的事情。例如,使用上面的代码,我可以将 [val-tol,val+tol] 范围内的数组中的所有值设置为某个值,而无需更改(即舍入)数组中的任何其他值。假设我想将区间 [-3,3] 中的所有值更改为 0.0,而不更改 [-3,3] 范围之外的值,那么周围将无法正常工作。话虽如此,它确实适用于小公差,并且适用于我目前的目的。
  • @Scott B:您可能只想使用满足某些条件的元素。例如 L= (-3
【解决方案2】:

【讨论】:

  • 但这不会将 +1.0e-8 的值四舍五入为 0.0。它会将 -1.0e-8 的值更改为 0.0(两者都使用类似于 [0,1] 的剪辑)。但是,我很高兴您指出了此功能,因为它对我的任务也很有用...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 2013-10-14
相关资源
最近更新 更多