小编AJE*_*Map的帖子

Python:替换数组中的值

我有一个1维数据集,其中一些没有数据值设置为9999.这是一个提取,因为它很长:

this_array = [   4,    4,    1, 9999, 9999, 9999,   -5,   -4, ... ]
Run Code Online (Sandbox Code Playgroud)

我想用任何一侧最接近的值的平均值替换无数据值,但是由于有些数据值没有最接近的值也没有数据值,因此替换它们有点困难.即我希望三个没有数据值被-2替换.我创建了一个循环来遍历数组中的每个标量并测试没有数据:

for k in this_array:
    if k == 9999:
        temp = np.where(k == 9999, (abs(this_array[k-1]-this_array[k+1])/2), this_array[k])
    else:
        pass
this_array[k] = temp
Run Code Online (Sandbox Code Playgroud)

但是我需要添加一个if函数或方法来获取k-1之前或k + 1之后的值,如果它也等于9999,例如:

if np.logical_or(k+1 == 9999, k-1 == 9999):
    temp = np.where(k == 9999, (abs(this_array[k-2]-this_array[k+2])/2), this_array[k])
Run Code Online (Sandbox Code Playgroud)

可以看出,这个代码变得混乱,因为最终可能会得到错误的值或者最后加载嵌套的if函数.有没有人知道一种更简洁的方法来实现它,因为它在整个数据集中变化很大?

根据要求:如果第一个和/或最后一个点不是数据,则最好用最近的数据点替换它们.

python arrays interpolation numpy median

6
推荐指数
1
解决办法
4249
查看次数

标签 统计

arrays ×1

interpolation ×1

median ×1

numpy ×1

python ×1