如何在 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)。
比如我有下面的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)。