2

我有 netcdf 文件,其中 _FillValue 和/或缺失值以各种组合设置(例如作为浮点数、字符串或根本不设置,通常为 -999./'-999' )。我正在操作这些文件并再次保存它们,并希望在我的输出文件中正确且一致地设置填充值。我的问题是:

1)使用_FillValue,或missing_value,或两者兼而有之,有什么区别?

2)填充值应该是哪种类型,关于值的最佳实践是什么?-999 似乎可能与实际数据混淆

3) netdcf 填充值如何与我的掩码数组中的 fill_value 组合(似乎默认为 10^20)?似乎有两种方法可以纠正同一件事。

4)我在处理数据时也收到警告:“用户警告:警告:未使用缺失值,因为它不能安全地转换为可变数据类型”,并且 _FillValue 自动设置为大约 10 ^ 36。所以我认为我的 -999 缺失值确实是个坏主意。

我正在使用 python 3.7 和 netcdf4。

谢谢!

4

1 回答 1

0

要回答第 2 点,每种类型(浮点数、整数等)都有一个默认缺失值,该缺失值可通过您使用的语言的特定 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}

如本文所述

于 2020-11-11T14:07:05.273 回答