eof是经常用来处理时空数据集的方法;在python中有直接可以使用的库来进行分解。以下是使用eofs的学习心得:

1>数据集要求:  `numpy.ndarray`, `numpy.ma.MaskedArray` or `dask.array.Array`
两维及以上、且第一维为时间 。缺测数据需要满足时间上连续性(缺测点一直缺测)

2>需要加载的库:(包括读取和绘图)

import xarray as xr
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from eofs.standard import Eof
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import cartopy.mpl.ticker as cticker
nf = xr.open_mfdataset('D:\\fang\\data\\t2m\\*.nc')  # 批量读取多个nc文件,读取后nf为xarray。Dataset对象
t2_3 = nf.variables['t2m'][2: :12, :, :]    #t2_3为DataArray对象
t2m = np.array(t2_3)                #  转换为eof库需要的numpy array

3>数据处理:

因为eof库需要数组中存在缺测的点一直缺测。即缺测的时间连续性。故需要对数据进行处理,将存在缺测的格点赋为nan。

ind_always = np.ones((t2m.shape[1], t2m.shape[2]))  #创建一个与t2m空间场shape相同的逻辑数组
ind_always = (ind_always == 1)  # 全是True
for i in range(t2m.shape[0]):       # 以年为循环次数temp = t2m[i, :, :]  # 第i年的空间场  ind_always = ind_always & (~np.isnan(temp))   #找出一直有数据的空间场格点
# ind_always表示一直有数据的格点的索引逻辑数组
t2m[:, ~ind_always] = np.nan     #将存在缺测的格点剔除
print(t2m.shape)

4>  进行eof分解:

eof = Eof(t2m)   #进行eof分解
U = eof.eofs(eofscaling=2, neofs=3)  # 得到空间模态U eofscaling 对得到的场进行放缩 (1为除以特征值平方根,2为乘以特征值平方根,默认为0不处理) neofs决定输出的空间模态场个数
PC = eof.pcs(pcscaling=1, npcs=3)  # 同上 npcs决定输出的时间序列个数
s = eof.varianceFraction(neigs=3)   # 得到前neig个模态的方差贡献
print(U.shape, PC.shape, s.shape)   

5>绘图:

接下来就是绘图啦!先是时间序列图:

fg=plt.figure(facecolor='w')  #设置背景颜色为白色
ax1=fg.add_subplot(111)
for i in range(0,62):         # 画bar图大于0值为红色,小于0值为蓝色if PC[i,0]>0:ax1.bar(i,PC[i,0],color='r')elif PC[i,0]<0:ax1.bar(i,PC[i,0],color='b')
ax1.set_xticks([0,10,20,30,40,50,60],[1960,1970,1980,1990,2000,2010,2020])  #设置x坐标

出图效果(时间序列):

然后是空间场图:

cm = plt.cm.get_cmap('RdYlBu_r')    #设置绘图颜色
fg = plt.figure(facecolor='w')
gax1 = fg.add_subplot(111,projection=ccrs.PlateCarree())
lon,lat= np.meshgrid(np.linspace(0,360,3600), np.linspace(90,-90.1,1801))
qs=gax1.contourf(lon,lat,U[0,:,:],cmap=cm,transform=ccrs.PlateCarree())  #设置投影
gax1.add_feature(cfeature.COASTLINE.with_scale('50m'))  #绘制海岸线
gax1.set_xticks([-120,-60,0,60,120])   #设置坐标刻度 下同
gax1.set_yticks([-60,-30,0,30,60])
gax1.xaxis.set_major_formatter(cticker.LongitudeFormatter()) # 设置坐标刻度格式
gax1.yaxis.set_major_formatter(cticker.LatitudeFormatter())
fg.colorbar(qs,ax=gax1,shrink =0.5)  #绘制色标

效果图:

Python学习笔记——eofs.standard的使用相关推荐

  1. Python 学习笔记(3)对txt文件的读与写操作(下)

    上一章节我们讨论了如何对txt文本文件进行读写操作,这一张将讨论如何进行二进制文件的写与读.<Python 学习笔记(3)对txt文件的读与写操作(上)>的链接如下https://blog ...

  2. Python学习笔记六——画小猪佩奇

    目录 Python学习笔记六--画小猪佩奇 画布 画笔 属性设置 操纵命令 运动命令 画笔控制命令 全局控制命令 其他命令 Python学习笔记六--画小猪佩奇 使用Python的turtle库可以绘 ...

  3. Python学习笔记-- 字符串和数字的连接

    Python学习笔记– 字符串和数字的连接 >>> s = 'abc' >>> print s + 1Traceback (most recent call las ...

  4. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  5. python学习笔记之编写readConfig读写配置文件

    python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客

  6. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  7. Python学习笔记一简介及安装配置

    Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...

  8. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  9. Python学习笔记(二):标准流与重定向

    Python学习笔记(二):标准流与重定向 - SamWei - 博客园 Python学习笔记(二):标准流与重定向 Posted on 2012-02-19 22:36 SamWei 阅读(176) ...

最新文章

  1. DCN-2655同异步端口
  2. android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
  3. ThinkPHP学习笔记之Model操作
  4. MLOps是构建在一个谎言上的吗?
  5. python读取excel表格-python读写excel文件
  6. VMware安装MacOSx系统
  7. js - flex布局测试案例:完美居中
  8. micopython 18b20_MicroPython控制8*8LED点阵显示温度
  9. mysql using btree_mysql 索引中的USING BTREE 的意义
  10. 杭电 1060 Leftmost Digit
  11. C# xml压缩包不解压的情况下解析xml内容
  12. 计算机等级考试--二级Java的知识点大全
  13. fiddler4请求拒绝原因
  14. 实对称矩阵的特征值一定为实数证明
  15. php 判断 小米 手机浏览器,小米2下的chrome调试
  16. 野火 步进电机 视频笔记
  17. erdas查看灰度直方图_ERDAS图像的基本操作
  18. 最全《智慧园区解决方案》
  19. [益智]:烧一根不均匀的绳子需要一个小时,如何用它来判断一小时15分?
  20. HCIP-DATACOM H12-831(141-160)

热门文章

  1. 曾经拥有VS天长地久
  2. HTML期末大作业 使用HTML+CSS制作科技文化主题网站(航天之路)
  3. 功能强大的免费国产开源合同管理系统-华炎合同管理系统
  4. PC历史上的20位英雄
  5. 【数据结构-树】哈夫曼树及其应用
  6. 陈启峰SBT(Size Balanced Tree )平衡搜索二叉树
  7. 走进Dubbo——RPC框架简介
  8. 二叉树、平衡二叉树、红黑树、B-树、B+树、B*树、T树之间的详解和比较
  9. 五种主流音频无损压缩格式简介
  10. 简单介绍下微信群大全500人大群及免费微信互投群万人群