将数组中的屏蔽值替换为它们旁边最接近的未屏蔽值的平均值的最有效 numpy 方法是什么?
例如:
a = np.array([2,6,4,8])
b = np.ma.masked_where(a>5,a)
print b
masked_array(data = [2 -- 4 --],
mask = [False True False True],
fill_value = 999999)
我希望将 b 中的掩码值替换为紧邻它们的平均值。边界可以重复最接近的未屏蔽值。因此,在此示例中,b 将如下所示:
b = [2,3,4,4]
提出这个问题的主要原因是看看是否可以在不使用迭代器的情况下有效地完成此操作。
最佳答案
import numpy as np
a = np.array([2,6,4,8])
mymask = a>5
b = np.ma.masked_where(mymask,a)
print b
# [2 -- 4 --]
c = np.interp(np.where(mymask)[0],np.where(~mymask)[0],b[np.where(~mymask)[0]])
b[np.where(mymask)[0]] = c
print b
# [2 3 4 4]
关于python - 如何用紧邻屏蔽值的平均值替换 numpy 数组中的屏蔽值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32450900/