将 .npy 掩码数组保存为带有 NaN 的 .npy 数组,其中 mask == True

Emi*_*ily 4 python numpy

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

a = np.ma.zeros((500, 500))
a.dump('test')
Run Code Online (Sandbox Code Playgroud)

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

unu*_*tbu 6

扫描屏蔽数组操作页面会显示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))
Run Code Online (Sandbox Code Playgroud)

产量

[[[ nan   1.   2.   3.]
  [  4.  nan   6.   7.]
  [  8.   9.  nan  11.]]

 [[ 12.  13.  14.  nan]
  [ 16.  17.  18.  19.]
  [ nan  21.  22.  23.]]]
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用屏蔽数组的filled 方法marr.filled(np.nan)相当于np.ma.filled(marr, np.nan).