首页 > 解决方案 > 替换 3d 数组中的缺失值

问题描述

我有一个包含缺失值的 3d 数组:

arr = np.array([[[ 1, 13],[ 2, 14],[ 3, np.nan]],[[ 4, 16],[ 5, 17],[ 6, 18]],[[ np.nan, 19],[ 8, 20],[ 9, 21]],[[10, 22],[11, 23],[12, np.nan]]])

我想执行插补来替换那些缺失值,最好使用最近的邻居。我尝试查看sklearn.impute模块,但没有一个函数接受 3d 数组。我知道我可以展平阵列,但这会导致空间信息丢失。有没有其他选择?

编辑:阵列具有 3d 空间配置,在现实世界中可能如下所示:

        layer 2
        13  14  nan
        16  17  18
        19  20  21
        22  23  nan
layer 1
1   2   3
4   5   6
nan 8   9
10  11  12

例如,value1是 layer 1 的邻居,2并且4在 layer 1 中。

通过展平arr

   [[ 1, 13],
    [ 2, 14],
    [ 3, np.nan],
    [ 4, 16],
    [ 5, 17],
    [ 6, 18],
    [ np.nan, 19],
    [ 8, 20],
    [ 9, 21],
    [10, 22],
    [11, 23],
    [12, np.nan]]

它看起来好像比4is 更远,但事实并非如此。和一样接近,只是在不同的维度上。12124

标签: pythonscikit-learnimputation

解决方案


推荐阅读