是否可以从 PyTables 中的表中选择行并将类似 Numexpr 的表达式应用于输出?例如,如果我有桌子
import tables as tb
class Event(tb.IsDescription):
x = tb.Float32Col()
y = tb.Float32Col()
z = tb.Float32Col()
我想要"z > 10.0"
的"x+y"
数组.
是的,这是很有可能的。 PyTables 提供了Expr
类来做到这一点。 它在幕后使用 numexpr。
我认为您正在尝试的内容与我在这里试图找到的内容密切相关。我认为将 numexpr 计算和内核内查询结合起来并不容易。一种可能性是在整个表上使用numepxr的where表达式,并将不满足条件的情况的结果设置为0,或者在计算过程中不会发生的情况,然后使用带有过滤掉0的条件的where查询。
但是,如果您有高选择性标准(低命中数),这将产生巨大的开销。如果是这种情况并且数据适合内存,则可以在加载到内存中的数组上使用 Numexpr(使用内核内查询)。