文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.7 枚举类型
习惯C的读者应该会认出下面这个类型。HDF5世界的枚举类型enum就是给一些整型数据打上文本标签。比如,在一个类型为np.utin8的数据集里,你可以定义0代表“RED”,1代表“GREEN”,2代表“BLUE”。
所有这些的意义在于能把这些值所代表的“语义”跟数据本身尽可能近地保存在一起,而不是保存在某个没人会去读的手册的附录G里。
NumPy对枚举没有本地支持,所以我们只能再一次求助于我们的老朋友h5py.special_dtype。这次我们使用一个不同的关键字enum,并提供一个基本类型和一个字典用于名字到值的映射关系:
你用这种方式创建的数据集和普通的整型数据集工作方式一模一样:
和变长字符串一样,你从该数据集读取的数据会丢失那个“特殊”的dtype类型:
记住,HDF5和NumPy都不会检查值的合法性。如果你给一个元素赋了一个枚举以外的值,HDF5会高兴地接受并保存它:
一切全靠自觉。
提示
HDF5自身不会处理整型和枚举的转换。所以如果你创建了一个枚举数据集,读取者必须显式将其转换成枚举。一般来说这没什么问题,但是按惯例,如果你需要和第三方应用互动,就一定要测试。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论