我有一个问题如何从pytables获取值。值基于位,但存储为整数。
我的表格中的一列是Int32Column()
,名称为'Value'
。在本专栏中,我将存储整数值,其中每个位都有不同的含义。所以,如果我想要一些信息,我将从表中获取值并进行一些操作操作。我不知道如何查询从表中获取指定的值。
例如,我想知道Value
列中的所有值,其中第一位== 1,第三位== 1.
如何进行查询? 我正在尝试使用面具:
[ x['Value'] for x in table.where('((Value & mask) == mask)')]
但是,我得到了例外:
NotImplementedError: unsupported operand types for \*and\*: int, int
处理查询必须非常快,因为将来会有大量的行。一个限制是值必须是表中的int值,因为我以int格式从服务器获取值。我希望有人有更好的解决方案。
答案 0 :(得分:1)
供将来参考。
我遇到了类似的问题,并通过以下方式解决了这个问题。由于通常的按位运算符(<<>>)不可用且&,|的含义运算符是合乎逻辑的,而不是按位,必须即兴发挥。
为了检查值VAL是否设置了第n位,我们可以将感兴趣的位移到第0位,这表示数字的奇偶校验(2 ** 0)。可以使用模数运算符检查奇偶校验。 因此,可以做一些事情,例如检查是否设置了第25位而未设置16。
table.where("((VAL/(2**25))%2==1) & ((VAL/(2**16))%2==0)")
不优雅,但现在正在工作。