我试图通过在 numpy 中进行解析/数据积累来加速我去年编写的二进制文件解析器。numpy 定义自定义数据结构并将二进制文件中的数据插入其中的能力看起来就像我需要的那样,除了这些文件中的某些字段是“非标准”长度(例如 6 个字节)的无符号整数。由于我使用的是 Python 2.7,因此我制作了自己的 int.from_bytes 模拟版本来处理这些字段,但是如果有任何方法可以在 numpy 中将这些字段本地读取为整数,那显然会更快、更可取。
问问题
1127 次
1 回答
5
Numpy 不支持任意字节长度的整数,并且使用 ctypes 位域会比它的价值更麻烦。
我建议使用矢量化切片将您的数据转换为下一个更高的标准大小整数:
buf = "000000111111222222"
a = np.ndarray(len(buf), np.dtype('>i1'), buf)
e = np.zeros(len(buf) / 6, np.dtype('>i8'))
for i in range(3):
e.view(dtype='>i2')[i + 1::4] = a.view(dtype='>i2')[i::3]
[hex(x) for x in e]
于 2012-07-16T19:45:34.213 回答