python - 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(所有整数或所有浮点数等)。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
第一次创建的组发生冲突。
推荐阅读
- python - 如果工作表上有过滤器,则excel Refreshall()不起作用,同时使用python刷新它
- python - Numpy as_strided() 分段错误
- bash - 使用 JAR 文件作为 Databricks 集群库
- python - Python:在熊猫中使用 agg() 函数避免多个列名
- r - 是否可以使用 R 找到最新的 GitHub 版本的存储库?
- android - OneSignal 推送通知序列(顺序)不正确
- shell - 如何传递参数并以所需格式输出
- node.js - 在 Apollo Server Playground 的选项卡中定义端点
- docker - 400 Bad Request 即使 docker 镜像正在运行
- windows - 是否可以使用 API 调用获得 RHEL 和 Windows 操作系统的操作系统支持截止日期