我正在尝试将信息存储在pytables子类中。我有我的类Record和子类Data。 Record的每一行都有很多行。我不想在row.append()中使用循环,因为它似乎非常慢。我可以创建一个数组并将其放在Data.v列中吗?怎么样?
import tables as tbs
import numpy as np
class Record(tbs.IsDescription):
filename = tbs.StringCol(255)
timestamp = tbs.Time32Col()
class Data(tbs.IsDescription):
v = tbs.Int32Col(dflt=None)
...
row = table.row
for each in importdata:
row['filename'] = each['filename']
row['timestamp'] = each['timestamp']
# ???? I want to do something like this
row.Data = tbs.Array('v', each['v'], shape=np.shape(each['v']))
row.append()
答案 0 :(得分:2)
好的,当我读到嵌套表时,我会考虑一对多情况下的关系数据。嵌套表无法做到这一点。相反,我只是使用
创建了一个单独的表并存储了行引用tables.nrows
获取我的数据表的当前行。这对我有用,因为对于Record I中的每个条目,我都可以计算将存储在Data中的行数。我只需要知道起始行。我将来不会修改/插入/删除任何行,所以我的引用不会改变。任何考虑这种技术的人都应该理解它带来的重大限制。
答案 1 :(得分:0)
嵌套列使用列键中的“/”分隔符。所以我认为你只需要更改一行:
row.Data = tbs.Array('v', each['v'], shape=np.shape(each['v']))
以下内容:
row['Data/v'] = each['v']