gpt4 book ai didi

pytables - 有没有办法按特定顺序存储 PyTable 列?

转载 作者:行者123 更新时间:2023-12-04 17:28:09 24 4
gpt4 key购买 nike

当使用字典或类作为模式定义调用 createTable() 时,PyTable 列似乎按字母顺序排列。我的需要是建立一个特定的顺序,然后使用 numpy.genfromtxt() 从文本中读取和存储我的数据。我的文本文件没有像 PyTable 那样按字母顺序包含变量名称。

例如,假设文本文件名为 mydata.txt 并组织如下:

时间(row1) bVar(row1) dVar(row1) aVar(row1) cVar(row1)

时间(row2) bVar(row2) dVar(row2) aVar(row2) cVar(row2)
...

时间(rowN) bVar(rowN) dVar(rowN) aVar(rowN) cVar(rowN)

因此,希望创建一个按这些列排序的表
然后使用 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

对于您的示例,它将如下所示:

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)

希望这可以帮助

关于pytables - 有没有办法按特定顺序存储 PyTable 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com