利用Python对栅格数据进行EOF并输出nc文件(含EOF分解)
最近比较苦恼如何将Python处理好的多维数组重新保存为nc文件
现在我就将利用xarray库完成nc文件读写流程分享给大家
我们以计算气温的EOF为例,来教大家如何对NC文件进行读写操作
数据来源:NCEP/NCAR 的温度数据
下载链接:https://downloads.psl.noaa.gov/Datasets/ncep.reanalysis.derived/pressure/air.mon.mean.nc
首先第一步载入相关库:
import xarray as xr
import numpy as np
import eofs
EOF模块:
这一部分我就不详细介绍了,网上有很多文章供大家参考
def eofs_(values):solver = eofs.xarray.Eof(values) EOFs = solver.eofs(neofs=10, eofscaling=2)pcs = solver.pcs(npcs=10, pcscaling=1)print(np.array(EOFs).shape)return EOFs, pcs
nc文件读取模块:
def read_file(path):ds = xr.open_dataset(path) #打开一个nc文件,注意:尽量不要是中文的容易报错values = ds.air # 读取air这个变量lat = ds.lat # 读取lat 纬度变量lon = ds.lon # 读取lon 经度变量time = ds.time # 读取时间序列levels = ds.level # 读取层次信息return values, lat, lon, time,levels
那么我们应该如何查看一个nc文件所含有的变量名称呢?
很简单使用print(ds.keys)
就能查看到一个nc文件下的所有变量名称
nc文件写入模块:
def create_file(outpath, values, lat, lon,levels):ds = xr.Dataset() #穿件一个Datasetds['EOFS'] = (('models','levels','lat', 'lon'), values.data) #将生成的EOFs写入到Dataset中#注意,models、levels、lat、lon这几个名称务必与values中的每个纬度对应上否则可能会生成一些奇怪的东西或者直接报错ds.coords['lat'] = lat.data #写入纬度信息ds.coords['lon'] = lon.data #写入经度信息ds.coords['models'] = np.arange(1,11,1) # 我在EOF模块中设置的是取前10个模态,所以这里我是用1~10来代替ds.coords['levels'] = np.array(levels) #向Dataset中写入各层信息ds.to_netcdf(outpath) #保存为nc文件
完整代码如下:
import xarray as xr
import numpy as np
import eofs'''
示例文件下载地址:https://downloads.psl.noaa.gov/Datasets/ncep.reanalysis.derived/pressure/air.mon.mean.nc
'''def eofs_(values):solver = eofs.xarray.Eof(values)EOFs = solver.eofs(neofs=10, eofscaling=2)pcs = solver.pcs(npcs=10, pcscaling=1)print(np.array(EOFs).shape)return EOFs, pcsdef read_file(path):ds = xr.open_dataset(path)values = ds.airlat = ds.latlon = ds.lontime = ds.timelevels = ds.levelreturn values, lat, lon, time,levelsdef create_file(outpath, values, lat, lon,levels):ds = xr.Dataset()ds['EOFS'] = (('models','levels','lat', 'lon'), values.data)ds.coords['lat'] = lat.data ds.coords['lon'] = lon.datads.coords['models'] = np.arange(1,11,1)ds.coords['levels'] = np.array(levels)ds.to_netcdf(outpath)if __name__ == '__main__':air, lat, lon, time,levels = read_file(r'D:/air.mon.mean.nc')EOFs, pcs = eofs_(air)outpath = r'D:/air.mon.mean.nc.eofs.nc'create_file(outpath, EOFs, lat, lon,levels)
利用Python对栅格数据进行EOF并输出nc文件(含EOF分解)相关推荐
- Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件
Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...
- alter table add column多个字段_利用Python将多个excel合并到一个文件中
数据岗位的小伙伴可能经常会遇到这样一个问题:多个来源返回的数据怎么整合到一个文件中?手动经常会出错,下面介绍一种利用Python处理的方式: 前期准备: 1.多个excel需要进行数据整理,保证文件的 ...
- 手把手教你利用Python轻松拆分Excel为多个CSV文件
公众号后台回复"图书",了解更多号主新书内容 作者:崔艳飞 来源:Python爬虫与数据挖掘 一.前言 在日常生活或者工作中的时候,我们偶尔会遇到这样一种让人头大的情况--当单个E ...
- 利用Python实现酒店评论的中文情感分析,含数据集
利用Python实现酒店评论的情感分析 完整代码下载地址:利用Python实现酒店评论的中文情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法: ...
- 利用Python模拟鼠标操作,一键将GIF文件载入CSDN的Markdown编辑器
简 介: 讨论了在csdn的Markdown编译器中自动载入GIF文件的方法.使用了Python中的pyautogui软件包,可以通过Python的小程序实现一键将GIF文件载入CSDN的Markdo ...
- 利用python读取栅格数据
代码具有详细说明注释 所需库 #gdalconst中的常量都加了前缀,力图与其他的module冲突最小 from osgeo import gdal,gdalconst from osgeo impo ...
- 利用python开源库制作并验证torrent种子文件
下面的文章来源于参考文献[1], 这里将我的实践过程记录如下,方便后来人参考,我的操作系统是Ubuntu 14.04 64bit 一.安装开源BT种子制作软件包 cd /home/taoyx/下载/ ...
- 利用python自动接发微信客户端消息(文件、图片等)
前期准备 1. 环境 python 3.7, win10 64位操作系统 2. 依赖包下载 pip install wxauto 4. 登陆微信PC客户端 接发消息 # wxauto 的代码太长,在 ...
- 利用 Python 和 Selenium 自动下载知网期刊文件
利用Selenium自动下载知网期刊文件 1 下载 Chrome 的 Webdriver 2 代码 2.1 导入相关的包 2.2 设置 WebDriver 2.3 找到期刊名在网页上对应元素 2.4 ...
最新文章
- vm虚拟机下linux安装python_VM中安装linux系统,安装VS Code,搭建Python环境
- opencv 安装_如何在 CentOS 8 上安装 OpenCV
- python中需要用到的英文词汇-使用python从语料库中提取最常用的单词
- 图解计算机图形学三维变换算法
- 显式锁select for update 用法
- MTK 驱动---(10) emmc总线
- Oracle 修改密码 解锁
- 经典排序算法(二十二)--图书馆排序(Library Sort)
- 宝藏女孩程序媛,谈谈职场成长这些事
- 2005-2020POI数据 高德POI数据 高德信息点数据 百度POI数据分析下载
- 半导体器件物理期末复习
- Xcode打包ipa基本步骤
- 对比找出两张Excel表的不同数据
- unity shader - 圣斗士星矢 人物 shader 还原 - GPA 抓帧提取资源、shader,ROOT权限、救砖、ro.debuggable=1(最终还是RenderDoc无法抓帧)
- 冰点还原忘记密码怎样删除?
- python中的乘方_python中的乘方
- 什么是数字孪生?已有哪些应用?终于有人讲明白了
- 学习编程语言的第一步,认识什么是计算机!!!
- Unable to chmod sdcard: Read-only file system
- [读书笔记]《Effective Modern C++》—— 移步现代 C++
热门文章
- Ubuntu 20.04 Desktop 安装
- Java-jdk8下载安装教程、Jmeter下载安装教程2021(环境变量配置)
- cpth计算机组成原理实验,计算机组成原理实验指导书-CPTH
- springboot JPA整合国产神通数据库(神州通用数据库)
- ubuntu16.04下postgresql常用命令,及图形化管理界面pgadmin3
- 【蓝桥杯】什么算法才是版本答案?近三年(2019-2021)蓝桥杯省赛涉及算法出现频率分析
- 阿里云网盘与相册服务企业版介绍
- 开源免费的WordPress个人博客主题推荐
- 项目:超市后台管理系统
- MVS-OS390系统管理-大型服务器概述[转]