当前位置: 首页 > news >正文

Python批量读取mat文件

一、前言

使用Python中的h5py库实现同一目录下多个mat文件的批量读取功能,获取数据、lon、lat等信息,其他变量内容可根据自己的mat格式进行更改。

二、代码

def open_matfiles(dir, start_index=None, end_index=None,lev_index=None,lev_value=None):'''打开一个文件夹下的所有mat文件,并返回数据、经度、纬度和层次信息。参数:dir (str): 包含.mat文件的文件夹路径。start_index (int, 可选): 要读取的第一个文件的索引(默认是0)。end_index (int, 可选): 要读取的最后一个文件的索引(默认是所有文件)。lev_index (int, 可选): 要读取的特定层次的索引(默认是None,表示读取所有层次)。lev_value (float, 可选): 要读取的特定层次的值(默认是None,表示读取所有层次),针对GPH200、500。返回:tuple: 包含以下元素的元组:- data (numpy.ndarray): 读取的所有数据。- lon (numpy.ndarray): 经度信息。- lat (numpy.ndarray): 纬度信息。- lev (numpy.ndarray): 层次信息(如果存在)。异常:FileNotFoundError: 如果指定的文件夹不存在。'''import h5pyimport numpy as npfrom pathlib import Pathdir_path = Path(dir)if not dir_path.exists():raise FileNotFoundError(f"文件夹{dir}不存在")mat_files = sorted(dir_path.glob("*.mat"))  # 对文件进行排序if start_index is None:start_index = 0if end_index is None:end_index = len(mat_files)lon = Nonelat = Nonelev = Nonedata_list = []for mat_file in mat_files[start_index:end_index]:with h5py.File(mat_file, "r") as mat_data:if lon is None:lon = np.array(mat_data["lon"])if lat is None:lat = np.array(mat_data["lat"])if lev is None:lev = np.array(mat_data.get("lev", None))  # 使用get方法提供默认值if lev is not None and lev_index is not None:data = np.array(mat_data["data"])[...,lev_index,:,:] # lev在倒数第三层data_list.append(data)elif lev is not None and lev_value is not None:index = np.where(lev == lev_value)data = np.array(mat_data["data"])[...,index,:,:]data_list.append(data)else:data = np.array(mat_data["data"])data_list.append(data)data = np.stack(data_list, axis=0)return data, lon, lat, lev
http://www.lryc.cn/news/456296.html

相关文章:

  • UE4 材质学习笔记05(凹凸偏移和视差映射/纹理压缩设置)
  • 基于贝叶斯决策的 CAD 程序设计方案
  • 算法: 二分查找题目练习
  • Qt开发技巧(十三)QList插入操作,扩展类型的使用,关于QSS的坑,Qt的延时方法,Qt编译的三种版本,环境搭建多练练,指向Qt源码的报错
  • docker快速上手
  • JAVA学习-练习试用Java实现“反转链表 II”
  • 15分钟学 Python 第35天 :Python 爬虫入门(一)
  • 【Qt】Qt学习笔记(一):Qt界面初识
  • Unity3D游戏的内存控制详解
  • 《数据结构》--栈【概念应用、图文并茂】
  • 国外电商系统开发-运维系统文件下载
  • 【CSS in Depth 2 精译_045】7.1 CSS 响应式设计中的移动端优先设计原则(上)
  • 在线教育新篇章:SpringBoot系统开发策略
  • cmdsh
  • 一键生成PPT的AI工具-Kimi!
  • java.lang.NoClassDefFoundError: kotlin/Result解决方案
  • LSTM的变体
  • LeetCode讲解篇之852. 山脉数组的峰顶索引
  • 矿井人员数据集,用于目标检测,深度学习,采用txt打标签,即yolo格式,也有原文件可以自己转换。总共3500张图片的数据量,划分给训练集2446张,
  • 消息队列RabbitMQ
  • RabbitMQ概述
  • Golang学习路线
  • Flink从ck拉起任务脚本
  • GADBench Revisiting and Benchmarking Supervised Graph Anomaly Detection
  • 某象异形滑块99%准确率方案
  • CDN绕过学习
  • SpringBoot日常:redission的接入使用和源码解析
  • npm包管理深度探索:从基础到进阶全面教程!
  • 最新免费GPT4O和Midjourney
  • python操作OpenAI教程