【发布时间】:2021-09-11 11:23:57
【问题描述】:
我有一个 1 x 400 的数组,其中所有元素的值都高于 1500。但是,我有一些元素的值小于 50,这是错误的度量,我希望在错误的测量数据点并在主阵列中替换它。 例如,元素编号 17 低于 50,所以我想取元素 16 和 18 的平均值,并用新的平均值替换元素 17。 有人能帮助我吗?非常感谢。
【问题讨论】:
-
你能分享一些你已经拥有的代码吗?您使用什么语言?
我有一个 1 x 400 的数组,其中所有元素的值都高于 1500。但是,我有一些元素的值小于 50,这是错误的度量,我希望在错误的测量数据点并在主阵列中替换它。 例如,元素编号 17 低于 50,所以我想取元素 16 和 18 的平均值,并用新的平均值替换元素 17。 有人能帮助我吗?非常感谢。
【问题讨论】:
问题中未指定语言,但对于 Python,您可以使用 List Comprehension:
# array with 400 values, some of which are incorrect
arr = [...]
arr = [arr[i] if arr[i] >= 50 else (arr[i-1]+arr[i+1])/2 for i in range(len(arr))]
也就是说,如果 arr[i] 小于 50,则将其替换为前后元素的平均值。这种方法有两个问题。
改进版本,牢记边缘情况:
# don't alter the first and last item, even if they're low
arr = [arr[i] if arr[i] >= 50 or i == 0 or i+1 == len(arr) else (arr[i-1]+arr[i+1])/2 for i in range(len(arr))]
# replace the first and last element if needed
if arr[0] < 50:
arr[0] = arr[1]
if arr[len(arr)-1] < 50:
arr[len(arr)-1] = arr[len(arr)-2]
我希望这个答案对你有用,即使你打算使用 Python 以外的其他语言或框架。
【讨论】: