如何直接在numpy数据类型中为16位无符号整数指定endiannes?

时间:2013-12-23 15:29:31

标签: python numpy

我认为这是一个简单的问题,但到目前为止我还没有找到答案。

我使用相当大的(~2 GB)二进制数据图像。我用行

将它们加载到python中
data = np.memmap(filename, dtype=np.dtype('uint16'), mode='r').byteswap()

对于大文件,这可能需要几秒钟。无论如何,我注意到同一行但没有byteswapping只需要一瞬间。

所以问题是:有没有办法直接在数据类型中指定字节顺序,所以我之后不需要做byteswap?根据{{​​3}},

  

数据类型对象(...)描述了数据的以下方面:   (...)3。数据的字节顺序(little-endian或big-endian)(...)

如何为16位无符号整数执行此操作? np.dtype('>uint16')之类的内容对我没用,他们给了我TypeError: data type ">uint16" not understood错误。

谢谢!

1 个答案:

答案 0 :(得分:8)

将dtype指定为>HNumeric typecodes)或>u2Array-protocol type strings):

np.memmap('test.bin', dtype=np.dtype('>u2'), mode='r')