如何在比较两个数组时用 nan 值填充数组

Bha*_*Jay 0 python numpy

我有两个 numpy 数组,例如

    import numpy as np
    a=np.array([[ 3, nan,  4,  1,  4,  2,  2,  3],
                [ 2, nan,  1,  3, nan,  4,  4,  3],
                [ 3,  2, nan,  4, nan, nan,  3,  4],
                [ 2,  2,  2, nan,  1,  1 ,nan,  2]])
  
    b =np.array( [[ 2,  3,  2, 2,  3,  3,  3,  3],
                 [ 3,  3,  1,  4,  1,  4,  1, 7],
                 [ 4,  2, 5,  4,  4,  3, 10,  4],
                 [ 2,  4,  2,  1,  4,  1,  3, nan]])
Run Code Online (Sandbox Code Playgroud)

要求 :

nan数组中的元素值a被分配到数组的b相同位置。

预期输出:

             [[2, nan, 2, 2, 3, 3, 3, 3],
              [3, nan, 1, 4, nan, 4, 1, 7],
              [4, 2, nan, 4, nan, nan, 10, 4],
              [2, 4, 2, 1, nan, 1, nan, nan]]
Run Code Online (Sandbox Code Playgroud)

Hom*_*512 5

这个怎么样:

b[np.isnan(a)] = float('nan')
Run Code Online (Sandbox Code Playgroud)

如果您想要副本b而不是就地更改它,请使用以下命令:

c = np.where(np.isnan(a), a, b)
Run Code Online (Sandbox Code Playgroud)

  • @KevinChoonLiangYew 也同样有效。我只是从来不记得有一个人存在。由于另一个答案使用“np.nan”,不妨保留我的变体 (2认同)