如何将numpy遮罩数组保存为fi

2024-06-30 15:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

什么是最有效的方法来保存核弹掩蔽阵列?很遗憾,numpy.save不起作用:

import numpy as np
a = np.ma.zeros((500, 500))
np.save('test', a)

这给出了:

NotImplementedError: Not implemented yet, sorry...

一种方法似乎是使用pickle,但不幸的是,这不是非常有效(巨大的文件大小),也不是独立于平台的。而且,netcdf4似乎也可以工作,但是它有很大的开销,只是为了保存一个简单的数组。

以前有人遇到过这个问题吗?我很想做numpy.savearray.data和另一个为面具。


Tags: 方法testimportnumpysaveasnpzeros
3条回答

一个简单的方法是分别保存屏蔽数组的数据和掩码:

np.save('DIN_WOA09.npy',DIN_woa.data)

np.save('mask_WOA09.npy',DIN_woa.mask)

然后,您可以从数据和掩码重建屏蔽数组。

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

然后一起读

a = np.load('test')

如果有不需要保存的固定掩码,则只需保存有效值:

a = np.ma.MaskedArray(values,mask)
np.save('test', a.compressed())

然后,您可以执行以下操作来恢复它:

compressed = np.load('test')
values = np.zeros_like(mask, dtype=compressed.dtype)
np.place(values, ~mask, compressed)
a = np.ma.MaskedArray(values, mask)

相关问题 更多 >