【问题标题】:Save.npy masked array to a .npy array with NaNs where mask == True将.numpy 掩码数组保存到具有 NaN 的 .numpy 数组,其中 mask == True
【发布时间】:2015-02-26 06:31:54
【问题描述】:

有没有办法将掩码的 3D numpy 数组转换为用 NaN 代替掩码的 numpy 数组?这样我就可以使用np.save 轻松地写出 numpy 数组。另一种方法是找到一种方法来写出被屏蔽的数组,并为被屏蔽的元素提供一些明确的指示符。我试过了:

a = np.ma.zeros((500, 500))
a.dump('test')

但我需要将文件采用某种格式,以便可以将其读入 R。谢谢。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    the masked array operations page 的扫描显示np.ma.filled 符合您的要求。例如,

    import numpy as np
    
    arr = np.arange(2*3*4).reshape(2,3,4).astype(float)
    mask = arr % 5 == 0
    
    marr = np.ma.array(arr, mask=mask)
    print(np.ma.filled(marr, np.nan))
    

    产量

    [[[ nan   1.   2.   3.]
      [  4.  nan   6.   7.]
      [  8.   9.  nan  11.]]
    
     [[ 12.  13.  14.  nan]
      [ 16.  17.  18.  19.]
      [ nan  21.  22.  23.]]]
    

    或者,您可以使用掩码数组的filled methodmarr.filled(np.nan) 等价于np.ma.filled(marr, np.nan)

    【讨论】:

      【解决方案2】:

      您可以将掩码乘以数据,以便所有被掩码的元素都为零,例如:

      a=np.random.rand(500,500)
      b=ma.masked_greater(a, .5)
      result=b.data*b.mask
      

      然后可以使用

      将其转换为 nan
      result[result==0] = np.nan
      

      【讨论】:

        猜你喜欢
        • 2018-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        • 1970-01-01
        • 1970-01-01
        • 2019-10-12
        相关资源
        最近更新 更多