例如,我有以下表格说明。在SpectrumL中,我想存储一个(频谱图)我还不知道确切的大小。同样,我想存储一些标签(这将是字符串),它们的大小会因记录而异。但是,当我尝试为此执行构建语句时,我收到以下错误:
TypeError: Passing an incorrect value to a table column. Expected a Col (or subclass) instance and got: "StringAtom(itemsize=20, shape=(), dflt='')". Please make use of the Col(), or descendant, constructor to properly initialize columns.
我正在执行的声明是:
h5file = tables.open_file("foo.h5", mode = "w", title = "Datastore")
group = h5file.create_group("/", 'metadata', 'General MetaData')
table = h5file.create_table(group, 'footer', hdf5Pull.BuildTable, "information")
表语句类是:
class BuildTable(IsDescription):
artist_id = StringCol(100)
tags = StringAtom(itemsize = 20)
spectrumL = Float64Atom((5000, 1))
spectrumR = Float64Atom((5000, 1))
frequency = Float64Atom((5000, 1))
任何人都可以帮忙看看这个吗?我在理解文档方面遇到了一些麻烦。谢谢!
答案 0 :(得分:0)
错误消息包含所有信息。您必须使用Col
或子类,但提供Atoms
。
表语句必须是这样的:
class BuildTable(IsDescription):
artist_id = StringCol(100)
tags = StringCol(itemsize = 20)
spectrumL = Float64Col(shape=(5000, 1))
spectrumR = Float64Col(shape=(5000, 1))
frequency = Float64Col(shape=(5000, 1))
如果要在单个单元格中存储多个值,则必须依赖多维单元格(请参阅here)。