2

我正在尝试将信息存储在 pytables 子类中。我有我的类记录和子类数据。对于每行记录,数据将有很多行。我不想使用带有 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()
4

2 回答 2

2

好的,当我阅读嵌套表时,我想到的是一对多情况下的关系数据。这对于嵌套表是不可能的。相反,我只是创建了一个单独的表并使用存储行引用

tables.nrows

获取我的数据表的当前行。这对我有用,因为对于 Record 中的每个条目,我都可以计算将存储在 Data 中的行数。我只需要知道起始行。我以后不会修改/插入/删除任何行,所以我的参考不会改变。任何考虑使用此技术的人都应该了解它带来的重大限制。

于 2013-10-14T20:07:06.683 回答
0

嵌套列在列键中使用“/”分隔符。所以我认为你只需要改变这一行:

row.Data = tbs.Array('v', each['v'], shape=np.shape(each['v']))

到以下:

row['Data/v'] = each['v']
于 2013-10-10T18:44:42.597 回答