从netCDF4转换为scipy.io netcdf

时间:2013-08-08 10:25:17

标签: python scipy netcdf

我正在尝试将netCDF4转换为scipy.io netcdf,因为程序进入的网页没有netCDF4模块。

该程序非常适用于netCDF4从文件中检索温度为degK的值,给出了以下值:

[[ 258.77999878  258.77999878  258.77999878 ...,  258.77999878
258.77999878  258.77999878]
 [ 259.29998779  259.54998779  259.82000732 ...,  258.3500061
258.70001221  258.97000122]
 [ 264.1000061   264.47000122  264.82000732 ...,  262.40002441
263.04998779  263.6000061 ]].

但是当使用scipy.io netcdf和netCDF4中使用的相同文件时。程序运行它应该再次给出degK的温度值,但值出现如下:

[[-25403 -25403 -25403 ..., -25403 -25403 -25403]
 [-25351 -25326 -25299 ..., -25446 -25411 -25384]
 [-24871 -24834 -24799 ..., -25041 -24976 -24921]].

我只是想知道是否有人在此之前遇到过这个问题以及如何解决它,以便scipy.io netcdf程序将提供相同的值。

1 个答案:

答案 0 :(得分:1)

首先,你需要区分你正在阅读netCDF-3或netCDF-4文件。 scipy.io.netcdf模块只能读取netCDF-3,所以如果它是netCDF-4文件,那么你就不走运了。不同之处在于netCDF-4文件使用HDF-5作为文件存储。也就是说,它看起来像是从你的文件中读入某些东西,所以很可能你有一个netCDF-3文件。

如果是这种情况,您需要在温度变量上查找“scale”和“offset”属性,并在使用scipy.io.netcdf时直接应用这些属性。 netCDF-4-python模块自动查找这些属性并为您“幕后”应用它们,这就是为什么您的数据在通过该模块时看起来不错。

干杯,

肖恩