h5py:如何读取 hdf5 文件的选定行?

2024-01-01

是否可以从 hdf5 文件中读取给定的行集而不加载整个文件?我有相当大的 hdf5 文件,其中包含大量数据集,下面是我想要减少时间和内存使用的示例:

#! /usr/bin/env python

import numpy as np
import h5py

infile = 'field1.87.hdf5'
f = h5py.File(infile,'r')
group = f['Data']

mdisk = group['mdisk'].value

val = 2.*pow(10.,10.)
ind = np.where(mdisk>val)[0]

m = group['mcold'][ind]
print m

ind不给出连续的行,而是给出分散的行。

上面的代码失败了,但它遵循切片 hdf5 数据集的标准方法。我收到的错误消息是:

Traceback (most recent call last):
  File "./read_rows.py", line 17, in <module>
    m = group['mcold'][ind]
  File "/cosma/local/Python/2.7.3/lib/python2.7/site-packages/h5py-2.3.1-py2.7-linux-x86_64.egg/h5py/_hl/dataset.py", line 425, in __getitem__
    selection = sel.select(self.shape, args, dsid=self.id)
  File "/cosma/local/Python/2.7.3/lib/python2.7/site-packages/h5py-2.3.1-py2.7-linux-x86_64.egg/h5py/_hl/selections.py", line 71, in select
    sel[arg]
  File "/cosma/local/Python/2.7.3/lib/python2.7/site-packages/h5py-2.3.1-py2.7-linux-x86_64.egg/h5py/_hl/selections.py", line 209, in __getitem__
    raise TypeError("PointSelection __getitem__ only works with bool arrays")
TypeError: PointSelection __getitem__ only works with bool arrays

我有一个示例 h5py 文件:

data = f['data']
#  <HDF5 dataset "data": shape (3, 6), type "<i4">
# is arange(18).reshape(3,6)
ind=np.where(data[:]%2)[0]
# array([0, 0, 0, 1, 1, 1, 2, 2, 2], dtype=int32)
data[ind]  # getitem only works with boolean arrays error
data[ind.tolist()] # can't read data (Dataset: Read failed) error

最后一个错误是由列表中的重复值引起的。

但是使用具有唯一值的列表进行索引效果很好

In [150]: data[[0,2]]
Out[150]: 
array([[ 0,  1,  2,  3,  4,  5],
       [12, 13, 14, 15, 16, 17]])

In [151]: data[:,[0,3,5]]
Out[151]: 
array([[ 0,  3,  5],
       [ 6,  9, 11],
       [12, 15, 17]])

具有适当维度切片的数组也是如此:

In [157]: data[ind[[0,3,6]],:]
Out[157]: 
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])
In [165]: f['data'][:2,np.array([0,3,5])]
Out[165]: 
array([[ 0,  3,  5],
       [ 6,  9, 11]])
In [166]: f['data'][[0,1],np.array([0,3,5])]  
# errror about only one indexing array allowed

因此,如果索引正确 - 唯一值,并且与数组维度匹配,它应该可以工作。

我的简单示例没有测试加载了多少数组。该文档听起来好像是从文件中选择元素,而不将整个数组加载到内存中。

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

h5py:如何读取 hdf5 文件的选定行? 的相关文章

随机推荐

  • 为什么 cython 嵌入插件在 python 解释器中比 rust-c 接口版本具有更高的性能?

    我想问一些关于python解释器的底层原理的问题 因为我自己搜索的过程中并没有得到太多有用的信息 我最近一直在使用 rust 编写 python 插件 这为 python 的 cpu 密集型任务提供了显着的加速 并且与 c 相比 编写速度也
  • C++ tmpnam 替代方案

    我有一个 C 库 它使用tmpnam NULL 创建一个临时文件 我需要破解这个 因为它在根文件夹 c 或 中生成临时文件 因此它需要管理权限 如何使用有效的临时路径将此功能更改为其他功能 Thanks Though tmpnam返回前面加
  • OBJECT 和 EMBED 标签是否始终位于顶部?

    我有一个我制作的网站 我在该网站上流式传输视频 它开始 看起来很酷 但我用 CSS 制作的菜单总是在视频下方 因此某些链接会在对象后面消失 有谁知道我是否可以解决这个问题 我想我尝试过一次 z index 无济于事 我刚刚重新发布了这个问题
  • 这种语言有下推自动机(PDA)吗?

    the language is An B 2n Cn where n gt 0 我认为是有的 因为你可以这样处理 推入A 推入B 每个C从堆栈中弹出3次 如果没有C并且堆栈为空 则返回true 否则返回false 使用泵引理来证明这不是上下
  • TypeScript 错误 TS2403:后续变量声明必须具有相同的类型

    我的 TypeScript 项目似乎遇到了一些编译错误 完整的错误是 node modules types mocha index d ts 2680 13 error TS2403 Subsequent variable declarat
  • 有适合新手的 XML/XSD 教程吗?

    有谁知道任何关于 XSD XML 的新手教程 这些教程简单地解释了事情 但详细介绍了如何做事情 以下是有关使用 XSD 验证 XML 的教程 http www ibm com developerworks xml tutorials x v
  • 数据表 colspan 排序

    当引入 colspan 或 rowspan 时 Datatable jquery 插件会出现错误 有没有其他办法可以渡过 只需使用一些 jQuery 手动完成即可 function var tableRows myDatatable tbo
  • C++ 一个标头多个源

    I have a large class Foo1 class Foo public void apples1 void apples2 void apples3 void oranges1 void oranges2 void orang
  • isinstance(x, list) 迭代包含字符串和列表的列表时

    At 由内而外迭代嵌套列表 https stackoverflow com questions 14960380 iterating nested list inside out 14960687 comment21002419 14960
  • 根据 WooCommerce 产品类别禁用特定购物车商品数量字段

    在我使用的 woocommerce 中从 WooCommerce 产品类别的购物车中隐藏 删除商品 https stackoverflow com questions 54033207 hide remove item from cart
  • 如何运行Hadoop程序?

    我已经在笔记本电脑上安装了 Hadoop 并成功运行了安装指南中给出的示例程序 但是 我无法运行程序 rohit renaissance1 hadoop ch2 hadoop MaxTemperature input ncdc sample
  • PermissionError:pip 从 8.1.1 升级到 8.1.2

    我正在尝试将 pip 从 8 1 1 升级到 8 1 2 但它显示以下 PermissionError WinError 5 Access is denied 如何升级pip C gt python m pip install upgrad
  • 如何处理 multiprocessing.Pool 中的初始化错误?

    当初始化程序抛出如下错误时 脚本将不会停止 我想在开始主进程之前中止 不要运行 do something from multiprocessing import Pool import contextlib def initializer
  • 如何在 ARM Cortex-a8 中使用乘法和累加内在函数?

    如何使用GCC提供的乘累加内在函数 float32x4 t vmlaq f32 float32x4 t float32x4 t float32x4 t 谁能解释一下我必须传递给这个函数的三个参数 我的意思是源寄存器和目标寄存器以及函数返回什
  • Suds 忽略代理设置

    我正在尝试使用 salesforce python toolkit 对 Salesforce API 进行 Web 服务调用 但是我在让客户端通过代理时遇到问题 由于该工具包基于 suds 之上 因此我尝试只使用 suds 本身 看看是否可
  • 如何防止文本字段中向上/向下箭头的默认行为?

    我正在为关键字创建一个输入字段 当用户写作时 我会在插入符号位置下方的列表中显示关键字的建议 输入字段是单行 因此我使用向上 向下箭头键选择建议 然后按 Enter 插入它 它大部分都在工作 除了一个很大的例外是向上 向下键还将插入符号位置
  • 我可以在没有 WebView 的情况下运行 Javascript,或者 WebView 可以在没有 Activity 上下文的情况下运行(例如在服务中)吗?

    我有一个 HTML5 JavaScript 支持的应用程序 我想将其移植到 Android 在某些情况下 JavaScript 代码需要在后台 Service 中运行 没有 UI 因此没有 WebView 例如 为了同步 通过研究 WebV
  • 使用gradle导入GSON

    我正在尝试使用 android studio 中的 gradle 将 GSON 导入到我的项目中 我已经使用了上找到的说明谷歌的 GitHub https github com google gson和几个堆栈溢出页面 例如here htt
  • Google Chrome - 扩展程序与应用程序

    我想修改 chrome 起始页 更改背景 也许还有徽标 我想将 jQuery 包含在用户本地存储中并在用户页面加载 搜索页面 时加载它 我从来没有用 chrome 做过任何事情 所以我想要一些方法来开始 我需要使用应用程序或扩展程序来阅读吗
  • h5py:如何读取 hdf5 文件的选定行?

    是否可以从 hdf5 文件中读取给定的行集而不加载整个文件 我有相当大的 hdf5 文件 其中包含大量数据集 下面是我想要减少时间和内存使用的示例 usr bin env python import numpy as np import h