最近比较苦恼如何将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分解)相关推荐

  1. Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件

    Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...

  2. alter table add column多个字段_利用Python将多个excel合并到一个文件中

    数据岗位的小伙伴可能经常会遇到这样一个问题:多个来源返回的数据怎么整合到一个文件中?手动经常会出错,下面介绍一种利用Python处理的方式: 前期准备: 1.多个excel需要进行数据整理,保证文件的 ...

  3. 手把手教你利用Python轻松拆分Excel为多个CSV文件

    公众号后台回复"图书",了解更多号主新书内容 作者:崔艳飞 来源:Python爬虫与数据挖掘 一.前言 在日常生活或者工作中的时候,我们偶尔会遇到这样一种让人头大的情况--当单个E ...

  4. 利用Python实现酒店评论的中文情感分析,含数据集

    利用Python实现酒店评论的情感分析 完整代码下载地址:利用Python实现酒店评论的中文情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法: ...

  5. 利用Python模拟鼠标操作,一键将GIF文件载入CSDN的Markdown编辑器

    简 介: 讨论了在csdn的Markdown编译器中自动载入GIF文件的方法.使用了Python中的pyautogui软件包,可以通过Python的小程序实现一键将GIF文件载入CSDN的Markdo ...

  6. 利用python读取栅格数据

    代码具有详细说明注释 所需库 #gdalconst中的常量都加了前缀,力图与其他的module冲突最小 from osgeo import gdal,gdalconst from osgeo impo ...

  7. 利用python开源库制作并验证torrent种子文件

    下面的文章来源于参考文献[1], 这里将我的实践过程记录如下,方便后来人参考,我的操作系统是Ubuntu 14.04 64bit 一.安装开源BT种子制作软件包 cd  /home/taoyx/下载/ ...

  8. 利用python自动接发微信客户端消息(文件、图片等)

    前期准备 1. 环境 python 3.7, win10 64位操作系统 2. 依赖包下载 pip install wxauto 4. 登陆微信PC客户端 接发消息 # wxauto 的代码太长,在 ...

  9. 利用 Python 和 Selenium 自动下载知网期刊文件

    利用Selenium自动下载知网期刊文件 1 下载 Chrome 的 Webdriver 2 代码 2.1 导入相关的包 2.2 设置 WebDriver 2.3 找到期刊名在网页上对应元素 2.4 ...

最新文章

  1. vm虚拟机下linux安装python_VM中安装linux系统,安装VS Code,搭建Python环境
  2. opencv 安装_如何在 CentOS 8 上安装 OpenCV
  3. python中需要用到的英文词汇-使用python从语料库中提取最常用的单词
  4. 图解计算机图形学三维变换算法
  5. 显式锁select for update 用法
  6. MTK 驱动---(10) emmc总线
  7. Oracle 修改密码 解锁
  8. 经典排序算法(二十二)--图书馆排序(Library Sort)
  9. 宝藏女孩程序媛,谈谈职场成长这些事
  10. 2005-2020POI数据 高德POI数据 高德信息点数据 百度POI数据分析下载
  11. 半导体器件物理期末复习
  12. Xcode打包ipa基本步骤
  13. 对比找出两张Excel表的不同数据
  14. unity shader - 圣斗士星矢 人物 shader 还原 - GPA 抓帧提取资源、shader,ROOT权限、救砖、ro.debuggable=1(最终还是RenderDoc无法抓帧)
  15. 冰点还原忘记密码怎样删除?
  16. python中的乘方_python中的乘方
  17. 什么是数字孪生?已有哪些应用?终于有人讲明白了
  18. 学习编程语言的第一步,认识什么是计算机!!!
  19. Unable to chmod sdcard: Read-only file system
  20. [读书笔记]《Effective Modern C++》—— 移步现代 C++

热门文章

  1. Ubuntu 20.04 Desktop 安装
  2. Java-jdk8下载安装教程、Jmeter下载安装教程2021(环境变量配置)
  3. cpth计算机组成原理实验,计算机组成原理实验指导书-CPTH
  4. springboot JPA整合国产神通数据库(神州通用数据库)
  5. ubuntu16.04下postgresql常用命令,及图形化管理界面pgadmin3
  6. 【蓝桥杯】什么算法才是版本答案?近三年(2019-2021)蓝桥杯省赛涉及算法出现频率分析
  7. 阿里云网盘与相册服务企业版介绍
  8. 开源免费的WordPress个人博客主题推荐
  9. 项目:超市后台管理系统
  10. MVS-OS390系统管理-大型服务器概述[转]