前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >背向NCL,面向对象

背向NCL,面向对象

作者头像
MeteoAI
发布2019-07-24 16:03:25
2.4K0
发布2019-07-24 16:03:25
举报
文章被收录于专栏:MeteoAIMeteoAIMeteoAI

首先这不是一篇告诉你如何抛弃NCL的推送,而是告诉你如何更好的使用Python!

作为曾经地球科学领域最炙手可热脚本语言之一的NCL已经进入维护模式,不再更新。NCAR将使用Python作为地球科学领域的主要数据处理和可视化工具。

NCAR对NCL进行了“封装”,构成了PyNGL和PyNIO,随后可能还会开发一款工具,囊括NCL中大多数函数。PyNGL和PyNIO中的函数和绘图方式与NCL是非常类似的,可以非常顺畅的从NCL转到Python。

但遗憾的是PyNGL和PyNIO仍不支持Windows系统(除了Win10的 Linux子系统外)。既然已经从NCL转到Python了,那么为什么一定要执着于PyNGL和PyNIO呢,今天就抛开PyNGL和PyNIO,介绍Python中其他常用库,实现真正的跨平台切换。

数据处理

NetCDF格式 : netCDF4-pythonh5pyh5netcdfxarray等。 除了上述简单的数据处理库之外,python还提供了NCOCDO工具的封装,pyncocdo,提供了更多的便捷操作。•Grib格式xarrayIrispygrib等,有些仅支持类Unix系统。 ECWMF提供了cfgrib工具可将grib格式转换为NetCDF格式,cfgrib库支持Mac,Linux和windows系统。•csv, xlsx等格式pandas你值得拥有,无论是气象还是其他领域的类似格式数据,使用pandas可以解决你的常用操作。•HDF格式pandash5py可以处理hdf5格式,PyHDF可以处理hdf4格式。•二进制numpy可以处理二进制数据,同时借助python内置struct模块可以非常方便的处理二进制格式数据。

上述介绍的一些库,很多仅支持简单的数据读取和写入操作,不支持更多计算操作。如果要对空间数据进行插值,可能就无法满足了。

数据插值

xESMFESMPy:气象数据空间插值,尤其是对于模式网格数据而言,提供了一些便捷的命令可对网格数据进行一些列插值操作•python-stratify:针对大气和海洋数据进行垂直插值•scipy.interpolate模块提供了大量插值函数•python-geotiepoints:针对地理网格数据的空间插值

说到地球科学领域的数据处理,最离不开的应该也是模式输出数据了。Python中有很多处理模式输出的库,功能都比较完善。

模式输出处理

wrf-python:对于使用WRF模式的来说使用最为频繁的模式输出后处理工具之一。•salem:这个库包含了数据处理和可视化几乎所有功能,就放这里吧,毕竟也提供了不少WRF模式后处理和前处理的函数。•CESM_postprocessing:针对CESM地球模式的后处理工具•CAMxTools:提供了CAMx和CMAQ模型的前处理和后处理功能•PseudoNetCDF:类似处理NetCDF的工具,可用于处理CMAQ等模式输出结果•MONET:模式和观测评估工具,然而我非常喜欢的一款类似工具还没有python版==

雷达和卫星数据处理

PyARTwradlib可用于处理国外常见格式的雷达数据。改进后的PyART[1]和PyART[2]提供国内常用的S波段雷达数据处理方式,还有这个PyCINRAD[3]。此外,Python中还提供了不少雷达数据处理和反演库。•satpyPyCAMApys5ppyresample等库可处理常见的卫星数据

说到数据处理,当然少不了Micaps的多种数据格式了,下面介绍一款国内大神基于Python开发的Micaps数据处理和可视化库:

Micaps数据处理

PyMICAPS:PyMICAPS[4]是由国内某气象局一位大神开源的Micaps输出处理和可视化工具(发布在知名同性交友平台--Github),功能相对齐全,而且也在不断完善。感兴趣的可以下载使用,并反馈意见,帮助持续完善(打个广告~~)。

数据处理完成之后,当然是要进一步进行分析,python中提供了相当多的分析工具,以下仅列出一小部分:

数据分析

EOFS:Python EOF分析库•statsmodels:Python统计分析库,提供了大量的统计分析函数•scikit-learn:Python中较为热门的机器学习库,其中也提供了相当多的统计学方法•metpysharppyatmos等库可计算大气科学领域常用的一些参数,其中metpy还提供了一些可视化和数据处理函数。

数据处理完成后,当然也要画图看一下了,要不然怎么发paper呢?<手动狗头>

数据可视化

matplotlibmatplotlib可以说是python中最为基础的绘图库了•seaborn:针对统计分析的可视化库•BasemapCartopy:针对地理信息的可视化库•EarthSim:针对环境模拟(比如水文气象等)的后处理可视化工具,包含了交互式可视化。•calmap:可以绘制日历图

除了上面列出来的之外,还有很多绘图工具,不再赘述。当然还有一些库不知道该怎么分类,因为分析画图的时候会用到,就放到这边吧:

geopandas:地理空间数据处理和可视化神器•pyshpfiona等可处理常规的shapefile文件,常在画图的时候添加海岸线和边界线使用

上述介绍的可视化库大多是非交互式可视化库,关于Python中更多的可视化库分类,见Python可视化工具概览

画图当然少不了配色,以下介绍一些Python中的配色库:

cmocean:海洋科学领域的配色库,除了python版之外,还有matlab及其他版本•colorcetpalettablecolour:提供了很多可选的colormap•colormap:提供了一些颜色转换基础操作和创建colormap的函数•cmaps:提供了NCL中所有的colormap

除了上面提到的之外,Python中还有很多可用的库,比如网络数据获取requestsbs4等,而且很多国外很多机构都提供了python版的获取数据的API接口工具。

机器学习

sklearn:前面已经介绍,可以用这个框架完成常用的机器学习流程,从数据预处理,特征工程,建模到评估,非常方便,但不支持深度学习的模型。•TensorFlow:大家都耳熟能详的深度学习框架,是Google brain 开发和维护的,在工业界和学术界都有广泛的使用。•Pytorch:与TensorFlow相比,Pytorch更加方便实现简单灵活的实验,它的前身是Torch,用的是lua语言,从Torch到Pytorch可以看成是lua到python的迁移。•Keras:是建立在 Tensorflow 和 Theano 之上的更高级的 封装,非常容易上手,适合进行简单的试验。具体可以看铁柱同学的系列文章。•XGBoost:被称为机器学习大杀器的XGBoost(eXtreme Gradient Boosting),想必大家都有所耳闻,很多比赛的top solutions大多数都用了这个算法。•lightgbm:微软推出的gbm算法模型,更加轻量,一些测试表明其可以实现类似xgboost的效果,但是可以极大节约时间成本。•CatBoost:CatBoost是Yandex在17年开源的机器学习框架,对类别特征支持较好,可以理解为基于类别特征优化的GBM算法。•Hyperopt:强大的调参库,支持贝叶斯优化。

上面仅对仅列出了一些气象或者机器学习常用库,当然还有很多库有待挖掘。当你有一个想法的时候,可以在Google或者Github搜索一下,说不定Python就能满足你呢!


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MeteoAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据处理
  • 数据插值
  • 模式输出处理
  • 雷达和卫星数据处理
  • Micaps数据处理
  • 数据分析
  • 数据可视化
  • 机器学习
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档