0

我有一个问题如何从 pytables 中获取值。值是基于位的,但存储为整数。

我表中的一列是Int32Column()name 'Value'。在本专栏中,我将存储整数值,其中每一位都具有不同的含义。因此,如果我想要一些信息,我将从表中获取值并进行一些位操作操作。我不知道如何查询以从表中获取指定值。

例如,我想知道Value第一位 == 1 和第三位 ==1 的列中的所有值。

如何进行该查询?我正在尝试使用面具:

[ x['Value'] for x in table.where('((Value & mask) == mask)')]

但是,我得到了例外:

NotImplementedError: unsupported operand types for \*and\*: int, int

处理查询必须非常快,因为将来会有大量行。一个限制是值必须是表中的 int 值,因为我从服务器获取 int 格式的值。我希望有人有更好的解决方案。

4

1 回答 1

1

备查。

我有一个类似的问题并通过以下方式解决了它。由于通常的按位运算符 (<<, >>) 不可用并且 &, | 的含义 运算符是合乎逻辑的,而不是按位计算,必须即兴发挥。

要检查值 VAL 是否设置了第 n 位,我们可以将感兴趣的位移动到第 0 位,这表示数字的奇偶性 (2**0)。可以使用模运算符检查奇偶校验。因此,可以执行类似检查,例如,第 25 位是否已设置而 16 位是否未设置。

table.where("((VAL/(2**25))%2==1) & ((VAL/(2**16))%2==0)")

不优雅,但现在工作。

于 2012-08-20T13:00:39.903 回答