我正在尝试将测量属性保存在HDF5文件中。我花了很多时间来处理用格式化制作的文件,其中在单个属性条目中似乎有一组具有不同数据类型的属性。

例如,对于我的文件,命令

f = h5py.File('test.data','r+')

f['Measurement/Surface'].attrs['X Converter']

产生

array([(b'LateralCat', b'Pixels', array([0. , 2.00097752, 0. , 0. ]))],

dtype=[('Category', 'O'), ('BaseUnit', 'O'), ('Parameters', 'O')])

在这里,前两个条目是字符串,第三个条目是数组。现在,如果我尝试将值保存到其他文件中:

f1 = h5py.File('test_output.data','r+')

f1['Measurement/Surface'].attrs.create('X Converter',[(b'LateralCat', b'Pixels', np.array([0. , 2.00097752, 0. , 0. ]))])

我收到此错误:

追溯(最近一次通话):文件“ ”,位于f1 ['Measurement / Surface']。attrs.create('X Converter',[(b'LateralCat',b'Pixels' ,np.array([0。,2.00097752,0.,0.]))])文件“ C:\ WinPython \ WinPython-64bit-3.6.3.0Zero \ python-3.6.3.amd64 \ lib \ site-packages \ h5py_hl \ attrs.py“,第171行,位于create htype = h5t.py_create(original_dtype,logical = True)文件” h5py \ h5t.pyx“,第1611行,位于h5py.h5t.py_create文件” h5py \ h5t.pyx “,在h5py.h5t.py_create文件中的第1633行,在“ h5py.h5t.py_create”文件中的第1688行,TypeError:对象dtype dtype('O')没有等效的本机HDF5

我想念什么?

解决方案

您没有保存相同的东西。在dtype原来的是显著。

In [101]: [(b'LateralCat', b'Pixels', np.array([0. , 2.00097752, 0. ,

...: 0. ]))]

Out[101]:

[(b'LateralCat',

b'Pixels',

array([0. , 2.00097752, 0. , 0. ]))]

In [102]: np.array(_)

:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray

np.array(_)

Out[102]:

array([[b'LateralCat', b'Pixels',

array([0. , 2.00097752, 0. , 0. ])]],

dtype=object)

In [104]: np.array([(b'LateralCat', b'Pixels', np.array([0. , 2.00097752, 0.

...: , 0. ]))],

...: dtype=[('Category', 'O'), ('BaseUnit', 'O'), ('Parameters', 'O')])

Out[104]:

array([(b'LateralCat', b'Pixels', array([0. , 2.00097752, 0. , 0. ]))],

dtype=[('Category', 'O'), ('BaseUnit', 'O'), ('Parameters', 'O')])

In [105]: x = _

In [106]: x.dtype

Out[106]: dtype([('Category', 'O'), ('BaseUnit', 'O'), ('Parameters', 'O')])

In [108]: x['Category']

Out[108]: array([b'LateralCat'], dtype=object)

In [109]: x['BaseUnit']

Out[109]: array([b'Pixels'], dtype=object)

In [110]: x['Parameters']

Out[110]:

array([array([0. , 2.00097752, 0. , 0. ])],

dtype=object)

尽管这还不能完全解决问题,但由于dtype仍然包含对象dtype字段。

In [111]: import h5py

In [112]: f=h5py.File('test.h5','w')

In [113]:

In [113]: g = f.create_group('test')

In [114]: g.attrs.create('converter',x)

Traceback (most recent call last):

...

TypeError: Object dtype dtype('O') has no native HDF5 equivalent

如评论中所述,numpy写入时对象dtype有问题h5py。您知道原始文件是如何创建的吗?那里可能存在某些格式或结构,这些格式或结构h5py呈现为带有对象字段的复合dtype,但不能直接写入。我必须深入研究文档(也许是原始文件)以了解更多信息。

我可以将该数据写为更常规的结构化数组:

In [120]: y=np.array([(b'LateralCat', b'Pixels', np.array([0. , 2.00097752,

...: 0. , 0. ]))],

...: dtype=[('Category', 'S20'), ('BaseUnit', 'S20'), ('Parameters', 'fl

...: oat',4)])

In [121]: y

Out[121]:

array([(b'LateralCat', b'Pixels', [0. , 2.00097752, 0. , 0. ])],

dtype=[('Category', 'S20'), ('BaseUnit', 'S20'), ('Parameters', '

In [122]: g.attrs.create('converter',y)

In [125]: g.attrs['converter']

Out[125]:

array([(b'LateralCat', b'Pixels', [0. , 2.00097752, 0. , 0. ])],

dtype=[('Category', 'S20'), ('BaseUnit', 'S20'), ('Parameters', '

python hdf5_Python HDF5属性相关推荐

  1. python 类 公有属性、私有属性、公有方法、私有方法

    python 类 公有属性.私有属性.公有方法.私有方法 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Int ...

  2. python面向对象类属性_python面向对象之类属性和类方法案例分析

    本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...

  3. python 中 property 属性的讲解及应用

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 装饰器 即:在方法上应用装饰器 类属性 即:在类中定义 ...

  4. Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  5. python控制画笔尺寸,Python画笔的属性及用法详解

    画笔有颜色.画线的宽度等属性. 1.turtle.pensize():设置画笔的宽度: 2.turtle.pencolor():没有参数传入返回当前画笔颜色:传入参数设置画笔颜色,可以是字符串如&qu ...

  6. python特性、属性以及私有化

    python中特性attribute 特性是对象内部的变量 对象的状态由它的特性来描述,对象的方法可以改变它的特性 可以直接从对象外部访问特性 特性示例: class Person:name = 'y ...

  7. html显示hdf5文件,python读取hdf5文件

    python怎样读取hdf5文件 python 中h5py读文件,提示错误File "h5py\_objects完整代码和完整错误信息的图片. Windows环境下给Python安装h5py ...

  8. python属性_深入理解python对象及属性

    类属性和实例属性 首先来看看类属性和类实例的属性在python中如何存储,通过__dir__方法来查看对象的属性 >>> class Test(object): pass >& ...

  9. Python操作HDF5存储数据方法总结

    写在前面 HDF是什么 可视化工具 Pandas内置HDF文件操作 踩坑记录 参考文献 后记 写在前面   最近在做股价预测有关项目,需要大量股票数据,然而手头的CSV格式的数据对硬盘的占用越来越大, ...

最新文章

  1. 程序的又一次测量学实际应用(程序对全站仪测量学导出数据文件的读取与修改)...
  2. 如何查看linux内核版本?(发行版本)
  3. ACM竞赛学习整理--Gauss求解POJ1166
  4. winform技巧一,errorprovider,任务栏可见,总在最前
  5. 独家揭秘 | 阿里怎么做双11全链路压测?
  6. 【ICLR2019】Oral 论文汇总
  7. 改变外观_“改”出来的精彩!盘点5种改变葫芦外观的技艺
  8. @Html.ValidationSummary()作用
  9. 网络管理与维护作业9
  10. 【博客话题】技术之路上的人和事
  11. Kotlin的一些特殊运算符
  12. Picasa2图片查找浏览工具
  13. pdca管理循环基本主张_PDCA循环在生产管理中的应用
  14. numpy tolist()的用法
  15. 关于Pearson相关系数的显著性p值如何计算以及背后原因的思考
  16. 基于深度学习模型(1D CNN)实现钓鱼网站检测
  17. python一天学费多少_自学python一天的小项目实战
  18. 韩:已撤销慰安妇财团法人资格 将启动清算程序
  19. 好用的工具推荐一下js美化代码
  20. Java性能优化怎么做好

热门文章

  1. windows远程连接服务器并映射端口访问目标服务
  2. ps人物磨皮美容插件:Pro Retouch Panel(支持ps2021)
  3. 《GTA5》游戏拆解分析
  4. 极简WEB文件管理工具(群晖)——TinyManager
  5. 【ELT.ZIP】OpenHarmony啃论文俱乐部——一文穿透多媒体过往前沿
  6. 大数据面试题以及答案整理(面试必备)
  7. 【三种常见架构开发模式:MVC、MVP、MVVM】
  8. ubuntu下重装WIN7
  9. [UOJ UNR #2]积劳成疾
  10. Win32反汇编(二)几种常见的指令反汇编详解:EAX、MOVSX与MOVZX、LEA、SUB、CMP与转移指令