使用属性从 H5 文件中过滤 HDF 数据集

2023-12-19

我有一个包含多个组和数据集的 h5 文件。每个数据集都有关联的属性。我想根据与其关联的相应属性查找/过滤此 h5 文件中的数据集。

Example:

dataset1 =cloudy(attribute) 
dataset2 =rainy(attribute)
dataset3 =cloudy(attribute)

我想找到具有以下内容的数据集weather属性/元数据为cloudy

完成此任务的最简单方法是什么pythonic way.


使用Python访问HDF5数据有两种方法:h5py and pytables。 两者都很好,但具有不同的功能:

  • h5py(来自 h5py FAQ):尝试将 HDF5 功能集映射到 NumPy 尽可能接近。有人说这让 h5py 更加“Pythonic”。
  • PyTables(来自 PyTables FAQ):在 HDF5 和 NumPy 之上构建一个额外的抽象层。它有更广泛的搜索 功能(与 h5py 相比)。

使用 HDF5 数据时,了解 HDF5 数据模型非常重要。这超出了本文的范围。为了简单起见,将数据模型视为文件系统;其中“组”和“数据集”就像“文件夹”和“文件”。两者都可以有属性。 “节点”是指“组”或“数据集”的术语。

@Kiran Ramachandra 概述了一种方法h5py。由于您用以下标签标记了您的帖子pytables,下面概述的是与pytables.

注意:Kiran 的示例假设数据集 1、2、3 均位于根级别。你说你也有团体。您的小组可能也有一些数据集。您可以使用HDFView https://www.hdfgroup.org/downloads/hdfview/用于查看数据模型和数据的实用程序。

import tables as tb
h5f = tb.open_file('a.h5')

这为您提供了一个文件对象,您可以使用它来访问其他对象(组或数据集)。

h5f.walk_nodes() 

它是节点和子节点的可迭代对象,并给出完整的 HDF5 数据结构(记住“节点”可以是组和数据集)。您可以使用以下命令列出所有节点和类型:

for anode in h5f.walk_nodes() :
    print (anode)

使用以下命令获取(非递归)节点名称的 Python 列表:

h5f.list_nodes() 

这将获取属性的值cloudy from dataset1(如果存在):

h5f.root.dataset1._f_getattr('cloudy')

如果您想要节点的所有属性,请使用它(如图所示)dataset1):

ds1_attrs = h5f.root.dataset1._v_attrs._v_attrnames
for attr_name in ds1_attrs :
   print ('Attribute',  attr_name,'=' ,h5f.root.dataset1._f_getattr(attr_name))

以上所有参考资料dataset1在根级别(h5f.root)。 如果数据集位于组中,则只需将组名称添加到路径中即可。 为了dataset2在名为agroup, use:

h5f.root.agroup.dataset2._f_getattr('rainy')

这将获取属性的值rainy from dataset2 in agroup(如果存在)

如果您想要所有属性dataset2:

ds2_attrs = h5f.root.agroup.dataset2._v_attrs._v_attrnames
for attr_name in ds2_attrs :
   print ('Attribute',  attr_name,'=' , h5f.root.agroup.dataset2._f_getattr(attr_name))

为了完整性,下面是要创建的代码a.h5在我的例子中使用。numpy只需要定义dtype创建表时。一般来说,HDF5 文件是可以互换的(因此您可以使用以下命令打开此示例h5py).

import tables as tb
import numpy as np
h5f = tb.open_file('a.h5','w')

#create dataset 1 at root level, and assign attribute
ds_dtype = np.dtype([('a',int),('b',float)])
dataset1 = h5f.create_table(h5f.root, 'dataset1', description=ds_dtype)
dataset1._f_setattr('cloudy', 'True')

#create a group at root level
h5f.create_group(h5f.root, 'agroup')

#create dataset 2,3 at root.agroup level, and assign attributes
dataset2 = h5f.create_table(h5f.root.agroup, 'dataset2', description=ds_dtype)
dataset2._f_setattr('rainy', 'True')
dataset3 = h5f.create_table(h5f.root.agroup, 'dataset3', description=ds_dtype)
dataset3._f_setattr('cloudy', 'True')

h5f.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用属性从 H5 文件中过滤 HDF 数据集 的相关文章

  • 散景图只会弹出一个空白窗口

    所以我最近一直在尝试学习散景 一切都很顺利 但突然间 每当我尝试制作散景图时 浏览器就会显示一个空白页面 我没有收到任何错误代码 只有空白页 这是我几天前成功用来创建绘图的程序 我什至尝试加载几周前制作的 html 绘图文件 该文件在同事计
  • 在 SQLAlchemy 中,过滤器是在连接之前还是之后应用?

    使用 SQLAlchemy 我执行如下查询 import models as m import sqlalchemy as sa s session maker q s query m ShareCount m Article join m
  • virtualenvwrapper 函数在 shell 脚本中不可用

    所以 我再一次制作了一个很棒的 python 程序 它让我的生活变得更加轻松 并节省了大量时间 当然 这涉及到一个 virtualenv 用mkvirtualenvvirtualenvwrapper 的功能 该项目有一个requiremen
  • pandas read_csv 之前预处理数据文件

    我使用 SAP 的数据输出 但它既不是 CSV 因为它不引用包含其分隔符的字符串 也不是固定宽度 因为它具有多字节字符 它是一种 固定宽度 字符 为了将其放入 pandas 我当前读取文件 获取分隔符位置 对分隔符周围的每一行进行切片 然后
  • 如何在Python + Selenium中获取元素的值

    我在我的 Python 3 6 3 代码中得到了这个 HTML 元素 作为 Selenium网页元素当然 span class ocenaCzastkowa masterTooltip style color 000000 alt 5 sp
  • 在 python 中发送标头[重复]

    这个问题在这里已经有答案了 我有以下 python 脚本 我想发送 假 标头信息 以便我的应用程序就像 Firefox 一样运行 我怎么能这么做呢 import urllib urllib2 cookielib username passw
  • 我可以同时打开两个 Tkinter Windows 吗?

    可以同时打开2个窗口吗 import tkinter as Tk import random import math root Tk Tk canvas Tk Canvas root background image Tk PhotoIma
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • 获取字符串模板中所有标识符列表的函数(Python)

    对于标准库string template在Python中 有没有一个函数可以获取所有标识符的列表 例如 使用以下 xml 文件
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • argparse 不检查位置参数

    我正在创建一个脚本 它使用 argparse 接受位置参数和可选参数 我已经阅读了 Doug 的教程和 python 文档 但找不到答案 parser argparse ArgumentParser description script t
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • Django 1.7:如何使用 html/css 文件作为模板发送电子邮件

    从 Django 1 7 开始 可以send email 使用新参数 html message 不幸的是 没有关于如何使用它的全面指南 新手友好 或者至少我找不到它 我需要使发送的电子邮件变得漂亮 因此 我试图弄清楚如何将我的消息包含到 h
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 如何在类型提示中定义元组或列表的大小

    有没有办法在参数的类型提示中定义元组或列表的大小 目前我正在使用这样的东西 from typing import List Optional Tuple def function name self list1 List Class1 if
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价

随机推荐

  • 未找到符号。 Collect2:ID 返回 1 退出状态

    我收到以下错误 Undefined symbols OBJC CLASS SurveyDelegate referenced from objc class ref to SurveyDelegate in Menus o ld symbo
  • 如何使用存储为 CSV 的矢量数据在 mahout 中执行 k 均值聚类?

    我有一个包含数据向量的文件 其中每行包含一个以逗号分隔的值列表 我想知道如何使用 mahout 对这些数据执行 k 均值聚类 wiki 中提供的示例提到了创建sequenceFiles 但除此之外 我不确定是否需要进行某种类型的转换才能获取
  • 使用 C# 检测文件名字符是否被视为国际字符

    我编写了一个小型控制台应用程序 下面的源代码 来定位并选择性地重命名包含国际字符的文件 因为它们是大多数源代码控制系统持续痛苦的根源 下面有一些背景知识 我使用的代码有一个简单的字典 其中包含要查找和替换的字符 并删除使用超过一个存储字节的
  • SQL Server 2012:如何将所有数据库存储过程编写成单独的 .sql 文件?

    我想编写从 SQL Server 2012 到 Visual Studio 2012 的所有存储过程的脚本 sql文件 在不同的项目中 我怎么做 我想要每个存储过程都有一个 sql 文件吗 在 SQL Server 2012 中右键单击 D
  • 为什么我的谓词没有回溯?

    我不明白为什么我的谓词不回溯并找到所有解决方案 person john person erik allExceptSpider person Spider T setof person X person X S subtract S per
  • 使用铯最轻的方法是什么?

    我有兴趣使用 Cesium 构建带有自定义图块的 3D 地球 但根据此处为 开始 说明 http cesiumjs org 2013 04 12 Cesium up and running 似乎您必须下载一个巨大的 30mb 目录并将整个内
  • Thymeleaf 选择选项性能问题

    我最近一直在摆弄 Spring MVC 5 和 Thymeleaf 3 0 并注意到一些奇怪的事情 我已经开始根据网站上的教程实现下拉列表 并注意到一些性能问题 如果我使用以下代码 我的页面大约需要 5 5 秒才能呈现大约 100 个项目的
  • android 滑动层activity动画

    我想实现滑动层动画以进行活动转换 如材料设计指南中所述 然而 我现在所能做的就是将 slip in 和保持动画简单组合起来 这不会给我带来堆叠层的效果 我怎样才能实现它 我目前的实施 活动开始时 activity overridePendi
  • 如何在SSIS包中设置变量?

    我需要在我的 SSIS 包中使用两个变量 extract beg date and extract end date 我如何设置它们以某种方式行事 例如 在存储过程中 它看起来像这样 SET extract beg date CASE WH
  • 如何在使用 XmlHttpRequest 和 FormData 时设置边界

    我试图在使用 FormData 发布 XmlHttpRequest 时在标头中正确设置边界 xhr open POST url xhr setRequestHeader Content type multipart form data bo
  • html2canvas 等待图像加载

    我遇到这个问题已经有一段时间了 但我似乎找不到解决方案 我正在使用最新的 html2canvas js 插件来截取使用 fllotcharts 制作的图表的屏幕截图 然后通过隐藏输入提交 base64 屏幕截图 问题是带有图表的 div 也
  • 排序依据和限制

    我需要执行以下查询 SELECT FROM specimens ORDER BY distribution sheet id DESC LIMIT 10 我已经把 我喜欢输出 limit 10 而不是 limit 1 我想它是 last 但
  • 不同主机上的 OpenMP 程序

    我想知道是否可以在多个主机上运行 OpenMP 程序 到目前为止 我只听说过可以在多线程上执行但都在同一台物理计算机上执行的程序 是否可以在两个 或更多 客户端上执行程序 我不想使用 MPI 是的 可以在分布式系统上运行 OpenMP 程序
  • 析构函数可以递归吗?

    这个程序定义是否明确 如果没有 到底为什么 include
  • 可读性与性能

    最近 我们在工作中讨论了局部变量对 Java 代码的性能和可读性的影响 我的一些同事认为这样的声明 new DoSomethingCmd new SelectionContext context keys infoStuff getCurr
  • 使用 :after 清除浮动元素

    我有一个清单 李有一个float left 之后的内容 ul 应正确对齐 因此我可以构建以下内容 http jsfiddle net 8unU8 http jsfiddle net 8unU8 我想 我可以删除 div class clea
  • Jquery UI 中的 Jquery Dragstart 和 Dragend 事件

    有没有办法访问这两个事件 偶数存在吗 我必须将传输数据设置为dragStart and dragEnd to an event object Check 拖动开始 http api jqueryui com draggable event
  • 如何在 Perl 中对 IP 地址列表进行排序?

    我有一堆 IP 地址存储在一个数组中 例如 my ip qw 10 11 1 1 10 100 1 1 如何按升序对地址进行排序 我尝试过一个简单的sort但当然失败了 IPv4 地址只是 32 位数字 use Socket qw inet
  • 通过css为javafx.scene.text.Text设置文本

    我需要在 css 中存储任何 JavaFX 元素的整个节点属性 或者主要是 对于 javafx scene text Text 或 javafx scene shape 对于文本 我不确定如何通过 css 设置文本值 是否可以 我需要将所有
  • 使用属性从 H5 文件中过滤 HDF 数据集

    我有一个包含多个组和数据集的 h5 文件 每个数据集都有关联的属性 我想根据与其关联的相应属性查找 过滤此 h5 文件中的数据集 Example dataset1 cloudy attribute dataset2 rainy attrib