首页 > 解决方案 > 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)

标签: pythonnumpynumpy-ndarraypytables

解决方案


File.create_array()适用于同质 dtypes(所有整数或所有浮点数等)。PyTables 使用不同的对象来保存混合的 dytpes。你需要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第一次创建的组发生冲突。


推荐阅读