感冒中,所以这一篇会比较短。(反正也没什么太多可讲的【不】)
本章我们将介绍用以读写netcdf文件的Python第三方库:netCDF4。
不过在介绍netCDF4之前,我觉得还是应该来说说nc文件的格式问题。
虽然nc文件我们一直在用,不过其实这个数据的具体格式对很多人来说依然是个未知数,就像一个黑匣子一样。究其原因,很大程度上是因为nc文件相比一般的二进制文件、文本文件,包含了除了数据本身之外的维度、属性(是不是有点熟悉?)等信息,想要读取nc文件,必须得调用专门的函数进行解码、识别。而这一操作是相当麻烦的。
如果想要在Fortran中进行nc文件的读取,不但需要在编译的时候注明netCDF库的路径,同时读取时需要经历这样的步骤:nc文件id获取>变量id获取>变量维数id获取>为变量分配内存空间>读取,这样繁琐的步骤。其中,如果搞错了变量维数、变量数据类型、变量id,就算是一点差错都会导致读取不成功或者读取到错误的结果。
如果是使用grads进行nc文件的读取呢?诚然,grads内置了打开nc文件的函数,但是其实它只能识别标准的nc数据格式,有时候会碰到使用grads内部函数无法打开netcdf文件的情况。不过最蛋疼的还是数据处理:有过使用grads经验的人应该都知道grads在代码编写、数据处理上面的麻烦之处;很多人都会选择将数据输出到二进制文件,再用Fortran去处理,但是这样的操作往往会出现错误。
所以,如果有一个平台既能方便快捷地读取nc文件,又能支持数据处理,那该多好。
Python就提供了这样一个平台。
Python中支持nc数据读写的库有很多,其中scipy和netCDF4较为出名,因为scipy主要还是一些科学计算的函数库,所以这里我们着重介绍netCDF4。
netCDF4的下载地址在:https://pypi.python.org/pypi/netCDF4,它的github主页在https://github.com/Unidata/netcdf4-python,感兴趣的同学可以前去了解关于这个库的更多信息。需要注意的是canopy本身没有包含netCDF4,需要用户自行下载安装,具体方法可以参加之前的教程。