使用 h5py 沿新轴将数据添加到现有 h5py 文件

2023-12-11

我有一些生成 3d Numpy 数组的示例代码 - 然后我使用 h5 文件将此数据保存到 h5py 文件中。然后我如何沿着第四维“附加”第二个数据集?或者,我如何沿着现有的第四维(或新轴)编写另一个 3D 数据集.h5文件?我已经阅读了我能找到的文档,但没有一个示例似乎解决了这个问题。我的代码如下所示:

import h5py
import numpy as np

dataset1 = np.random.rand(240,240,250);
dataset2 = np.random.rand(240,240,250);

with h5py.File('data.h5', 'w') as hf:
    dset = hf.create_dataset('dataset_1', data=dataset1)

Using http://docs.h5py.org/en/latest/high/dataset.html我尝试了一下:

In [504]: import h5py
In [505]: f=h5py.File('data.h5','w')
In [506]: data=np.ones((3,5))

做一个普通的dataset:

In [509]: dset=f.create_dataset('dset', data=data)
In [510]: dset.shape
Out[510]: (3, 5)
In [511]: dset.maxshape
Out[511]: (3, 5)

帮助resize:

In [512]: dset.resize?
Signature: dset.resize(size, axis=None)
Docstring:
Resize the dataset, or the specified axis.

The dataset must be stored in chunked format; it can be resized up to
the "maximum shape" (keyword maxshape) specified at creation time.
The rank of the dataset cannot be changed.

由于我没有指定maxshape我似乎无法更改或添加到此数据集。

In [513]: dset1=f.create_dataset('dset1', data=data, maxshape=(2,10,10))
...
ValueError: "maxshape" must have same rank as dataset shape

所以我无法定义 3d“空间”并将 2d 数组放入其中 - 至少不能这样。

但我可以添加一个维度(排名)data:

In [514]: dset1=f.create_dataset('dset1', data=data[None,...], maxshape=(2,10,10))
In [515]: dset1
Out[515]: <HDF5 dataset "dset1": shape (1, 3, 5), type "<f8">

现在我可以调整数据集的大小 - 在 1 个或多个维度中,直到定义的最大值。

In [517]: dset1.resize((2,3,10))
In [518]: dset1
Out[518]: <HDF5 dataset "dset1": shape (2, 3, 10), type "<f8">
In [519]: dset1[:]
Out[519]: 
array([[[ 1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,  0.,  0.],
        [ 1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,  0.,  0.],
        [ 1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]]])

原本的data占据扩展数据集的一角

现在填写一些零:

In [521]: dset1[1,:,:]=10
In [523]: dset1[0,:,5:]=2

In [524]: dset1[:]
Out[524]: 
array([[[  1.,   1.,   1.,   1.,   1.,   2.,   2.,   2.,   2.,   2.],
        [  1.,   1.,   1.,   1.,   1.,   2.,   2.,   2.,   2.,   2.],
        [  1.,   1.,   1.,   1.,   1.,   2.,   2.,   2.,   2.,   2.]],

       [[ 10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.],
        [ 10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.],
        [ 10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.,  10.]]])

所以是的,你可以把你的两个dataset in one h5数据集,前提是您指定了足够大的数据集maxshape首先,例如(2,240,240,250) 或 (240,240,500) 或 (240,240,250,2) 等

或者无限调整大小maxshape=(None, 240, 240, 250)).

看起来主要的限制是创建后无法添加维度。

另一种方法是在存储之前连接数据,例如

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

使用 h5py 沿新轴将数据添加到现有 h5py 文件 的相关文章

随机推荐

  • Rails 3 - 嵌套资源路由 - 一对一关系

    某些嵌套资源路由遇到一些问题 我想做的是链接到用户的个人资料页面以进行编辑 在我看来 它写成 哪个错误出现 No route matches action gt edit controller gt profiles user id gt
  • 添加复选框以自动完成 -jQuery

    我正在编写这段代码 并使用 jQuery UI 进行自动完成 现在我需要一些帮助来添加复选框 以便我可以进行多项选择 并且它以逗号分隔反映在我的字段中 我找到了一个正是我想要创建的插件 但我不想在 我的工作 中使用任何插件http www
  • 如何在r中将数字转换为儒略日期?

    day lt c seq 1 10592 by 1 如何将 日 更改为儒略日期格式 从 1982 年 1 月 1 日到 2010 年 12 月 31 日 提前致谢 Try help search Julian 有一个函数julian 所以给
  • 如何在 Mongo 中执行“NOT IN”查询?

    这是我的文档 title Happy thanksgiving body come over for dinner blocked user 333 name john user 994 name jessica user 11 name
  • Android应用程序没有启动图标

    我已经组装了一个简单的应用程序 当我安装该应用程序时 会显示图标 但安装后就没有启动图标 这是我的 AndroidManifest xml
  • 本地主机的 Google 地图 API 密钥

    如何让 Google 地图 API 密钥在本地主机上工作 我创建了一个 API 密钥 并在引荐来源网址下添加了以下内容 Accept requests from these HTTP referrers websites Optional
  • 如何在 Chartist.js 中使用插件?

    我正在使用 Chartist js 制作饼图组件 我想使用图例插件https codeyellowbv github io chartist plugin legend 我的饼图中没有得到图例 请参阅下面的屏幕截图 Code import
  • 多线程中boost asio中的随机EOF

    我对 boost asio 还很陌生 我正在经历随机文件结尾在多线程服务器中 我可以在这个小例子中重现我的问题 Server 这是一个简单的回显服务器 该协议很简单 1 客户端连接 2 服务器读取一个字节 该字节是要读取和发回的字符串的长度
  • 如何更改 Windows 8 动态磁贴文本颜色?

    我正在创建一个 Windows 8 应用程序 我想在其中更改活动磁贴的前景 我找到了一个模板集但没有找到任何方法来改变动态图块的文本颜色 我在我的应用程序中编写了以下模板代码
  • 禁用元素属性排序

    有没有办法禁用元素属性的排序 以便当 allowedContent 设置为 true 时 checkDirty 能够正常工作 属性排序示例here div simplesimple div 即使用户实际上没有更改 ckeditor 用户界面
  • 在函数中更新 matplotlib 图像

    我有一个处理图像的循环 我希望在每 100 次迭代时使用 matplotlib 在单个输出窗口中显示图像 所以我试图编写一个函数 它将采用 numpy 张量作为输入并显示相应的图像 这是我所拥有的不起作用的内容 def display im
  • Nokogiri 可以搜索“?xml-stylesheet”标签吗?

    我需要解析 XML 样式表 使用 Nokogiri 我尝试过 doc search xml stylesheet first href 但我收到错误 on error unexpected after Nokogiri CSS Syntax
  • 如何在实体框架中访问context.Database.SqlQuery?

    我正在尝试遵循本教程 http blogs msdn com b diego archive 2012 01 10 how to execute stored procedures sqlquery in the dbcontext api
  • 无法将文件从 docker-compose 挂载复制到主机

    我无法将 Selenium 测试生成的文件复制到安装到主机的 docker 容器内的文件夹中 这是我的撰写文件的样子 selenium image selenium standalone chrome expose 4444 tests b
  • 使用 boost asio 重用套接字

    我尝试使用 boost asio 套接字 绑定到本地地址 端口组合 效果很好 不起作用的是 一旦套接字和应用程序停止并重新启动 就重新使用套接字 open the socket it would also be opened by the
  • Google Actions sdk 无法从 Firebase 存储中播放 ssml 中的音频

    Google Actions SDK 无法从 Firebase 存储播放 SSML 音频标记中的音频文件 虽然我可以播放维基百科上相同的 ogg 格式文件 https upload wikimedia org wikipedia en 9
  • CSS媒体查询处理新的高分辨率手机,同时忽略平板电脑

    根据我的研究 新款智能手机人像分辨率高达800px平板电脑最低纵向分辨率 600px 现在 我尝试使用媒体查询将移动 css 渲染到支持高达 800px 分辨率的手持设备 但我遇到的问题是旧平板电脑 例如具有 768px 纵向分辨率的 ip
  • 如果用户在java中关闭浏览器,如何清除httpsession

    如果消费者关闭浏览器窗口 我试图清除 HttpSession 我不知道该怎么做 请帮助我 感谢和问候 却克里 如果您可以让浏览器 可靠地 通知服务器用户已关闭窗口 那么服务器可以调用session invalidate 根据 ejay fr
  • 快速改变图像的色调

    I am new to swift and trying to achieve this essentially This image to 这张图片 gt 我正在使用这个代码从这里更改图像的色调但未获得所需的输出 func tint im
  • 使用 h5py 沿新轴将数据添加到现有 h5py 文件

    我有一些生成 3d Numpy 数组的示例代码 然后我使用 h5 文件将此数据保存到 h5py 文件中 然后我如何沿着第四维 附加 第二个数据集 或者 我如何沿着现有的第四维 或新轴 编写另一个 3D 数据集 h5文件 我已经阅读了我能找到