欢迎光临散文网 会员登陆 & 注册

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

2023-05-11 23:21 作者:Unlim-Succession  | 我要投稿


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


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

分享到微博请遵守国家法律