netcdf4中_FillValue、missing_value和Python掩码数组fill_value的区别

3
我有一些netcdf文件,其中_FillValue和/或缺失值以各种组合设置(例如作为浮点数、字符串或根本没有设置,并且通常为-999./'-999')。我正在操作这些文件并将它们保存,希望在我的输出文件中正确且一致地设置填充值。我的问题是:
1)使用_FillValue、missing_value还是两者都用,有什么区别?
2)填充值应该是哪种类型,关于值的最佳实践是什么?-999似乎可能会与实际数据混淆。
3)netdcf填充值如何与我的掩码数组中的fill_value结合使用(似乎默认为10^20)?它看起来像是纠正同一件事的两种方法。
4)当处理数据时,我也会收到一个警告:“UserWarning:WARNING:missing_value未使用,因为它无法安全地转换为变量数据类型”,并且_FillValue会自动设置为约10^36。所以我认为我的-999缺失值确实是个坏主意。
我正在使用Python 3.7和netcdf4。
谢谢!

将来,请尽量避免在同一篇帖子中提出多个问题 - 最好将它们分成单独的问题进行提问 :-) - undefined
1个回答

0
回答第二点,每种类型(浮点数、整数等)都有一个默认的缺失值,可以通过使用特定的netcdf模块来获取该值,具体取决于您使用的编程语言。
举个例子,如果您正在使用Fortran90(或更高版本),一旦加载了netcdf模块,您就可以使用预定义变量来访问双精度浮点变量的默认缺失值。
NF90_FILL_DOUBLE

在Python3中,与你特别提到的NETCDF处理包有关,情况会稍微复杂一些。但是如果你使用netCDF4包(现在相当标准),你可以通过以下方式查看默认的缺失值:
import netCDF4
netCDF4.default_fillvals
{'S1': '\x00', 'i1': -127, 'u1': 255, 'i2': -32767, 'u2': 65535, 'i4': -2147483647, 'u4': 4294967295, 'i8': -9223372036854775806, 'u8': 18446744073709551614, 'f4': 9.969209968386869e+36, 'f8': 9.969209968386869e+36}

如本文所述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接