Sacpy库试用之经验正交分解——以太平洋海温为例 | 气象编程 数据处理 Python

1 官网的介绍
Sacpy是一个有效的气候和气象数据统计分析工具(如回归,EOF, MCA),旨在为气候数据分析提供一个通用框架。
提供的数据处理工具包括线性回归(一元/多元)、经验正交分解(EOF)、最大协方差分析(MCA/SVD)、便利的统计分析(如求年平均、统计检验等)和便利的绘图等。
1.1 安装方法
pip install sacpy
1.2 Sacpy的特点
速度快;兼容Numpy/Xarray等库;代码简洁。
综上,当前Sacpy库提供的功能相对较少,只适合基础的气候数据处理,目前地位也远不如Numpy、Xarray、Scipy、Metpy等数据处理中主流的库,但可以测试一下EOF和MCA工具的性能。
以往EOF分析和MCA分析通常分别用eofs库和xMCA库实现,下面对比一下夏季海温做EOF分析并绘图的两种方法,主要考虑代码量、图片美观等。
2 使用的数据
海温:HadISST1.1,时间选取1901-2015年。
3 传统方法:eofs库做EOF;Matplotlib和Cartopy库绘图
3.1 主要程序
3.2 输出结果
<xarray.DataArray 'variance_fractions' (mode: 2)>
array([0.49036235, 0.16722111], dtype=float32)
Coordinates:
* mode (mode) int32 0 1
Attributes:
long_name: variance_fractions

4 Sacpy方法:画图中尽可能只使用Sacpy提供的函数
4.1 主要程序
4.2 输出结果
[0.48376837 0.17081447]

5 总结
EOF分析部分,eofs库和Sacpy库代码量差别不大,计算结果也相似。eofs.xarray输入和输出的数据格式都为dataarray,方便后续的操作;Sacpy无论吃进去什么格式都吐出ndarray,如果有后续处理可能要转化一下,比较麻烦。
绘图部分,Matplotlib + Cartopy组合的代码量较大,但逻辑性很强,可读性高,一些常用部分可以用自定义函数封装(如绘制底图的部分),方便重复使用;Sacpy显得较粗糙,图片拥挤,经纬度比例不对,字符相互重叠等等。对比两张图片,第一幅较美观,即便在SCI一二区也是不错的图,第二幅图恐怕连普刊都看不上吧,如果要拿第二幅图投普刊,还要用Matplotlib + Cartopy修饰一下,与其这样为什么不全程使用捏?
综上,实在是想不出有什么理由去用Sacpy。
6 相关链接
Sacpy库官网 https://zilum.github.io/sacpy/index.html
eofs库官网 https://ajdawson.github.io/eofs/latest/#
xMCA库官网 https://github.com/Yefee/xMCA
气象数据处理:T-N三维波活动通量的Python实现 https://www.bilibili.com/read/cv15633261
Python气象数据处理中的数值微分和积分法——其一 https://www.bilibili.com/read/cv21395997
Python气象数据处理中的数值微分和积分法——其二 https://www.bilibili.com/read/cv23576975