微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyTables create_array无法保存numpy数组

如何解决PyTables create_array无法保存numpy数组

为什么下面的代码给出了

“ TypeError:数组对象当前无法处理void,unicode或对象数组”

Python 3.8.2,表3.6.1,numpy 1.19.1

import numpy as np
import tables as tb
TYPE = np.dtype([
    ('d','f4')
])
with tb.open_file(r'c:\temp\file.h5',mode="a") as h5file:
    h5file.create_group(h5file.root,'grp')
    arr = np.array([(1.1)],dtype=TYPE)
    h5file.create_array('/grp',str('arr'),arr)

解决方法

File.create_array()适用于同类dtypes(所有int或所有floats等)。 PyTables使用不同的对象来保存混合的类型。您需要改用File.create_table()。请参阅下面的修改代码(仅更改了最后一行)。

TYPE = np.dtype([ ('d','f4') ])
with tb.open_file(r'c:\temp\file.h5',mode="a") as h5file:
    h5file.create_group(h5file.root,'grp')
    arr = np.array([(1.1)],dtype=TYPE)
    h5file.create_table('/grp',str('arr'),arr)

注意:如果使用以前工作中的现有mode='a'文件运行,则temp.h5会出错。这是由于与第一次创建的组/grp发生冲突。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。