PyTables:从Table中选择Rows并应用Numexpr

时间:2014-02-19 17:02:19

标签: python numpy pytables numexpr

是否可以从PyTables中的表中选择行并将类似Numexpr的表达式应用于输出?例如,如果我有表

import tables as tb

class Event(tb.IsDescription):
    x = tb.Float32Col()
    y = tb.Float32Col()
    z = tb.Float32Col()

我希望"x+y"数组"z > 10.0"

2 个答案:

答案 0 :(得分:1)

是的,这是非常可能的。 PyTables提供了Expr class来做到这一点。它在封面下使用了numexpr。

答案 1 :(得分:0)

我认为你所尝试的与我试图找出here的内容密切相关。我认为将numexpr计算和内核查询结合起来并不容易。可能的方法是在整个表上使用numepxr的where表达式,并将不满足条件的情况的结果设置为0,或者在计算过程中不会发生的情况,然后使用where条件筛选出的条件0

但是,如果您具有高选择性标准(低命中数),这将产生巨大的开销。如果是这种情况并且数据适合内存,则可以在加载到内存中的数组上使用Numexpr(使用内核内查询)。