如何在 PyTable 中存储数组或字符串列表?

How can I store an array or list of Strings in a PyTable?

比如我有下面的table描述。在 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")

table语句class是:

   class BuildTable(IsDescription):
        artist_id = StringCol(100)
        tags = StringAtom(itemsize = 20)
        spectrumL = Float64Atom((5000, 1))
        spectrumR = Float64Atom((5000, 1))
        frequency = Float64Atom((5000, 1))

谁能帮忙看看这个?我在理解文档时遇到了一些麻烦。谢谢!

错误信息包含所有信息。您必须使用 Col 或子类,但您提供的是 Atoms

table 语句必须是这样的:

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)。