Python:用没有循环的邻居的平均值替换特定值

丹尼尔·勒夫特

例如在这个列表中:

arr = [1.0, 1.0, None, 3.0, None, 5.0, 5.0, 5.0, None, 1.0, 2.0, 3.0]

我需要None用它们的邻居的平均值替换所有的而不使用循环或附加函数(仅lambda)。

结果应该是这样:

[1.0, 1.0, **2.0**, 3.0, **4.0**, 5.0, 5.0, 5.0, **3.0**, 1.0, 2.0, 3.0]

我试图通过使用来做到这一点map

arr = list(map(lambda x: (arr[arr.index(None) - 1] + arr[arr.index(None) + 1]) / 2 if not x else x, arr))

问题是arr.index(None)它只被调用一次并返回2,而不是计算下一个None的索引。所以这样的结果是:

[1.0, 1.0, **2.0**, 3.0, **2.0**, 5.0, 5.0, 5.0, **2.0**, 1.0, 2.0, 3.0]

任何帮助将不胜感激。

编辑:假设 None 不能出现在乞讨或结尾。也不能出现在行中。

克瑞纳

您展示的示例可以通过以下方式解决:

arr = [1.0, 1.0, None, 3.0, None, 5.0, 5.0, 5.0, None, 1.0, 2.0, 3.0]
indices = range(1, len(arr)-1)

arr_new = [arr[0]] + list(map(lambda i: (arr[i-1] + arr[i+1])/2 if arr[i] is None else arr[i], indices)) + [arr[-1]]
print arr
print arr_new

但是:您还没有说明如果第一个或最后一个元素 isNone或者彼此相邻的两个元素 areNone会发生什么,因此这些情况在这里会失败。

输出:

[1.0, 1.0, None, 3.0, None, 5.0, 5.0, 5.0, None, 1.0, 2.0, 3.0]
[1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 5.0, 5.0, 3.0, 1.0, 2.0, 3.0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Numpy:用平均值替换重复值

来自分类Dev

使用基于邻居的平均值更改特定值

来自分类Dev

Python获取具有na值的矩阵中邻居的平均值

来自分类Dev

用R中的apply替换循环的滚动平均值

来自分类Dev

用R中的apply替换循环的滚动平均值

来自分类Dev

用环境值的平均值替换缺失的值

来自分类Dev

R:用特定数据范围的平均值替换数据框中的某个值

来自分类Dev

熊猫用平均值替换列的值

来自分类Dev

SAS:用最近邻居的平均值代替缺失值

来自分类Dev

对数组邻居值求平均值

来自分类Dev

用R中所有行的平均值替换除一个以外的所有列值

来自分类Dev

用前哨值计算平均值

来自分类Dev

用平均值填充空值

来自分类Dev

特定值组的平均值

来自分类Dev

计算特定值的平均值

来自分类Dev

用滚动平均值或其他插值替换NaN或缺失值

来自分类Dev

没有 NA 的 R 平均值

来自分类Dev

AWK:用平均值替换重复条目的不同值

来自分类Dev

R:用两个最连续值的平均值替换NA

来自分类Dev

用多行中的平均值替换R中的基本值

来自分类Dev

如何在不使用 group by 的情况下用平均值替换空值?

来自分类Dev

用前一个记录和当前值的平均值替换负值

来自分类Dev

Python - 唯一值的平均值

来自分类Dev

Pandas:使用for循环按列中的特定值计算平均值

来自分类Dev

查找特定列的平均值,并保留所有具有特定平均值的行

来自分类Dev

熊猫仅用一组平均值替换列的所有值

来自分类Dev

熊猫用给定分组的平均值替换nan

来自分类Dev

用平均值替换NA-s

来自分类Dev

Python,根据许多具有相应值的csv文件计算平均值/均值

Related 相关文章

热门标签

归档