当使用字典或类进行模式定义以调用 createTable() 时,PyTable 列似乎按字母顺序排列。我的需要是建立一个特定的顺序,然后使用 numpy.genfromtxt() 从文本中读取和存储我的数据。我的文本文件没有像 PyTable 那样按字母顺序包含变量名称。
例如,假设文本文件名为 mydata.txt 并组织如下:
时间(行1) bVar(行1) dVar(行1) aVar(行1) cVar(行1)
时间(行2) bVar(行2) dVar(行2) aVar(行2) cVar(行2)
...
时间(行N) bVar(行N) dVar(行N) aVar(行N) cVar(行N)
因此,希望创建一个按这些列排序的表
然后使用 numpy.genfromtxt 命令填充表。
# Column and Table definition with desired order
class parmDev(tables.IsDescription):
time = tables.Float64Col()
bVar = tables.Float64Col()
dVar = tables.Float64Col()
aVar = tables.Float64Col()
cVar = tables.Float64Col()
#...
mytab = tables.createTable( group, tabName, paramDev )
data = numpy.genfromtxt(mydata.txt)
mytab.append(data)
这是我们所希望的,因为它是简单的代码并且速度非常快。但是,PyTable 列始终按字母顺序排序,并且附加数据根据所需顺序排序。我在这里缺少一些基本的东西吗?有没有办法让表列的顺序遵循类定义顺序而不是按字母顺序排列?
是的,您可以通过多种不同的方式定义表中的顺序。最简单的一种是使用pos
每列的参数。请参阅文档Col
class:
http://pytables.github.io/usersguide/libref/declarative_classes.html#the-col-class-and-its-descendants http://pytables.github.io/usersguide/libref/declarative_classes.html#the-col-class-and-its-descendants
对于您的示例,它将如下所示:
class parmDev(tables.IsDescription):
time = tables.Float64Col(pos=0)
bVar = tables.Float64Col(pos=1)
dVar = tables.Float64Col(pos=2)
aVar = tables.Float64Col(pos=3)
cVar = tables.Float64Col(pos=4)
希望这可以帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)