【Python实例】netCDF数据介绍及处理

netCDF数据处理

  • netCDF数据介绍
  • 1 netCDF数据结构
    • 1.1 维度(Dimensions)
    • 1.2 变量(Variables)
    • 1.3 坐标变量(Coordinate Variables)
    • 1.4 属性(Attributes)
  • 2 netCDF数据处理
    • 方法1:利用netCDF4打开nc格式数据
      • 2.1.1 安装netcdf4库
      • 2.1.2 创建/打开/关闭netCDF文件
      • 2.1.2 netCDF创建示例
    • 方法2:利用xarray打开nc格式数据
  • 参考

netCDF数据介绍

NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络的数据的描述和编码标准。

NetCDF官方介绍
在这里插入图片描述
netcdf4-python官方文档
在这里插入图片描述

1 netCDF数据结构

netCDF存储为包含两个部分的单个文档:

  • 文件头,包含维度(dimensions), 属性(attributes)和变量(variables)的所有信息,但不包含变量数据(variable data)
  • 数据部分,由固定大小数据(fixed-size data,存储有限维度变量的数据)和可变大小数据(variable-size data,存储具有无限维度变量的数据

1.1 维度(Dimensions)

netCDF的维度具有名称和长度,维度的长度可以为任意正整数,只是在经典的netCDF数据集中只有1个维度可以具有无限长度,而在netCDF4中可以使用任意数量的无限维。这样的维度称为无限维度或者记录维度,具有无限维度的变量可以沿该维度增长至任意长度。无限维度索引就像传统面向记录的文件的记录编号。

netCDF经典数据集最多可以具有一个无限维度(不是必要的)。如果一个变量具有无限维度,这个维度必须是最重要的。因此任何无限维度都必须是CDL形状中的第一个维度和相应C数组声明中的第一个维度。而在netCDF4数据集中可以有多个无限维度,并且在变量维度列表中的顺序没有限制。要沿无限维度增长变量,请使用任何netCDF写入数据写入函数写入数据,并将无限维度的索引指定为所需的记录编号,netCDF库将写入所需的记录数量(使用填充值填充任何干预记录,除非关闭该功能)。如纬度,经度,高度和时间,前三个分配固定的长度,时间赋予UNLIMITED,这意味着它是无限的维度。

1.2 变量(Variables)

变量用于将大量数据存储在netCDF数据集中,变量表示一组具有相同类型的值。标量被当作0维数据,一个变量具有名称、数据类型和形状,形状有创建变量时指定的维度列表描述。变量还可能具有关联的属性,这些属性可以在创建变量后添加、删除或更改。

1.3 坐标变量(Coordinate Variables)

变量与维度同名是合法的,这些变量对于netCDF库没有特殊意义,但是有一个约定,就是使用此库的软件应该应以特殊方式处理此类变量。与维度同名的变量称为坐标变量,它通常定义为该维度对应的物理坐标。

1.4 属性(Attributes)

NetCDF 属性用于存储有关数据的数据(辅助数据或元数据),在许多方面类似于存储在传统数据库系统中的数据字典和架构中的信息。大多数属性提供有关特定变量的信息。属性比变量或维度更具动态性;它们可以被删除,并在创建后更改其类型、长度和值,而 netCDF 接口不提供删除变量或更改其类型或形状的方法。

可基于Panoply软件查看nc数据信息,如下:
Panoply软件的安装可参见另一博客-【Python工具】Panoply介绍及安装步骤。
在这里插入图片描述

2 netCDF数据处理

netCDF 文档有五种类型(NETCDF3_CLASSIC、NETCDF3_64BIT_OFFSET、NETCDF3_64BIT_DATA、NETCDF4_CLASSIC 和 NETCDF4)。

方法1:利用netCDF4打开nc格式数据

2.1.1 安装netcdf4库

pip install netCDF4
# 或者使用conda
conda install -c conda-forge netCDF

基于pip安装netcdf4库界面如下:
在这里插入图片描述

2.1.2 创建/打开/关闭netCDF文件

要从 python 创建 netCDF 文档,只需调用 Dataset 构造函数即可。这也是用于打开现有 netCDF 文件的方法。
确保资源能够释放,在文件的读写时使用with语句:

import netCDF4 as ncwith nc.Dataset("./demo.nc", "a") as dataset:print(dataset.data_model)

2.1.2 netCDF创建示例

方法2:利用xarray打开nc格式数据

存储 xarray 数据结构的推荐方法是netCDF,它是一种二进制文件格式,适用于起源于地球科学的自描述数据集。Xarray是基于netCDF数据模型,所以磁盘上的netCDF文件直接对应Dataset对象(更准确的说,netCDF文件中的一个组直接对应一个Dataset对象,详见Groups)。

参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI人工智能大模型应用如何落地?

人工智能大模型是近年来人工智能领域的一项重要技术突破,其具备强大的计算能力和学习能力,能够处理大规模的数据和复杂的任务。 然而,要将人工智能大模型应用落地并实现实际价值,还需要克服一些挑战和问题。 首先,人…

华为升腾C92安装windows NAS

华为升腾C92安装windows NAS NAS(Network Attached Storage:网络附属存储),我们之前所了解的群晖,也仅仅是NAS当中的一个品牌运营而已。 这次,我决定在C92上面试着安装Windows NAS。虽然群晖NAS是基于Linu…

OpenCV官方教程中文版 —— 图像去噪

OpenCV官方教程中文版 —— 图像去噪 前言一、原理二、OpenCV 中的图像去噪1.cv2.fastNlMeansDenoisingColored()2.cv2.fastNlMeansDenoisingMulti() 前言 目标 • 学习使用非局部平均值去噪算法去除图像中的噪音 • 学习函数 cv2.fastNlMeansDenoising(),cv2.fa…

Breakpad在Windows,Linux双平台编译、集成以及dump文件的分析

Breakpad在Windows,Linux双平台编译、集成以及dump文件的分析 1、Windows平台 Windows平台上非常好的参考文档: https://r12f.com/posts/google-breakpad-1-introduction-with-windows/ https://r12f.com/posts/google-breakpad-2-implementations-o…

安全模型的分类与模型介绍

安全模型的分类 基本模型:HRU机密性模型:BLP、Chinese Wall完整性模型:Biba、Clark-Wilson BLP模型 全称(Bell-LaPadula)模型,是符合军事安全策略的计算机安全模型。 BLP模型的安全规则: 简…

【大数据】Apache NiFi 数据同步流程实践

Apache NiFi 数据同步流程实践 1.环境2.Apache NIFI 部署2.1 获取安装包2.2 部署 Apache NIFI 3.NIFI 在手,跟我走!3.1 准备表结构和数据3.2 新建一个 Process Group3.3 新建一个 GenerateTableFetch 组件3.4 配置 GenerateTableFetch 组件3.5 配置 DBCP…

答题测评考试小程序的效果如何

在线答题系统是一种在线练习、考试、测评的智能答题系统,适用于企业培训、测评考试、知识竞赛、模拟考试等场景,管理员可任意组题、随机出题,答题者成功提交后,系统自动判分。 多种题目类型,两种答题模式 练习模式&a…

Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題

Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題 新搭建的FLINK集群出现的问题汇总 1.新搭建的Flink集群和Hadoop集群无法正常启动Flink任务 查看这个提交任务的日志无法发现有用的错误信息。 进一步查看yarn日志: 发现只有JobManager的错误日志出现了如下的…

请求地址‘/operlog‘,发生未知异常

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…

[nodejs] 爬虫加入并发限制并发实现痞客邦网页截图

今晚想给偶像的相册截个图,避免某一天网站挂了我想看看回忆都不行,用的是js的木偶师来爬虫台湾的部落格,效果图大概是这样,很不错 问题来了.我很贪心, 我想一次性把相册全爬了,也就是并发 ,这个人的相册有19个!!我一下子要开19个谷歌浏览器那个什么进程, 然后程序就崩了, 我就想…

软件设计模式原则(二)开闭原则

继续讲解第二个重要的设计模式原则——开闭原则~ 一.定义 开闭原则,在面向对象编程领域中,规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意…

半导体芯片制造行业MES系统解决方案

半导体产业作为现代电子科技的重要支柱,驱动着电子设备和通信技术的飞速发展。随着技术不断演进,半导体制造企业面临着越来越多的挑战,如高度复杂的工艺流程、全球化的竞争、质量控制的要求以及能源效率等问题。 为了应对这些挑战&#xff0…

Python测试之Pytest详解

概要 当涉及到python的测试框架时,pytest是一个功能强大且广泛应用的第三方库。它提供简洁而灵活的方式来编写和执行测试用例,并具有广泛的应用场景。下面是pytest的介绍和详细使用说明: pytest是一个用于python单元测试的框架,它…

Dubbo篇---第一篇

系列文章目录 文章目录 系列文章目录一、说说一次 Dubbo 服务请求流程?二、说说 Dubbo 工作原理三、Dubbo 支持哪些协议?一、说说一次 Dubbo 服务请求流程? 基本工作流程: 上图中角色说明: 二、说说 Dubbo 工作原理 工作原理分 10 层: 第一层:service 层,接口层,…

Flutter 05 组件状态、生命周期、数据传递(共享)、Key

一、Android界面渲染流程UI树与FlutterUI树的设计思路对比 二、Widget组件生命周期详解 1、Widget组件生命周期 和其他的视图框架比如android的Activity一样,flutter中的视图Widget也存在生命周期,生命周期的回调函数体现在了State上面。组件State的生命…

mysql索引深度学习

索引是什么? 索引是一种用于加快查询和索引的数据结构,其本质上就是一种排序好的数据结构,就类似书的目录。 索引的底层有多种实现的结构:b树,b树,Hash,红黑树。InnoDB和MyISAM的索引都是通过…

Vue 中的 computed 和 watch 的区别

引言 在Vue.js中,computed和watch是两个常用的属性,用于处理数据的监听和响应。它们在功能上有一些相似之处,但也有一些重要的区别。本文将介绍computed和watch的区别,并提供相关的代码示例。 使用computed 和 watch 的好处 Vue…

Python模块psutil:系统进程管理与Selenium效率提升的完美结合

前言 在前面编写一个Selenium的自动化程序时候,发现一个问题。 因笔记本配置较为差,所以每次初始化Selenium的WebDriver都会非常慢,整个等待过程是不友好的。 所以我就想到: 在程序中初始化一个全局的WebDriver对象&#xff0c…

pytorch-损失函数-分类和回归区别

torch.nn 库和 torch.nn.functional库的区别 torch.nn库:这个库提供了许多预定义的层,如全连接层(Linear)、卷积层(Conv2d)等,以及一些损失函数(如MSELoss、CrossEntropyLoss等&…

nginx负载配置

Nginx是一款高性能的Web服务器,同时也是一款高效的反向代理和负载均衡工具。在高并发的情况下,使用Nginx进行负载均衡可以提高网站的并发处理能力,保证网站的稳定性和可用性。下面是一些关于Nginx负载均衡的基础知识和配置方法。 Nginx负载均…