【问题标题】:difference between netcdf4 _FillValue, missing_value, and python masked array fill_valuenetcdf4 _FillValue、missing_value 和 python 掩码数组 fill_value 之间的区别
【发布时间】:2020-05-28 09:33:54
【问题描述】:

我有 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。

谢谢!

【问题讨论】:

  • 以后,尽量避免在同一篇文章中提出多个问题 - 最好将它们分成单独的问题 :-)

标签: python netcdf4 masked-array


【解决方案1】:

回答第 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}

as outlined in this post

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 2021-11-19
    • 2016-05-18
    • 2019-10-12
    • 2015-11-09
    • 2019-04-10
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多