numpy:用big-endian编写uint16的大型二维数组

numpy:用big-endian编写uint16的大型二维数组,numpy,Numpy,我试图将512x512uint16 2D数组保存为二进制电影的二进制帧。格式需要是big-endian,但我一直在编写小endian数据(尝试在Matlab、java中读取,它仍然是小endian)。我尝试更改字节顺序,如下所示,但没有效果。很抱歉,这是个愚蠢的问题 sys.byteorder = 'big' for frame in range (0,1) fid.write(array) fid.close() sys.byteorder = 'little'; 下面的线程似乎是相

我试图将
512x512
uint16 2D
数组保存为二进制电影的二进制帧。格式需要是big-endian,但我一直在编写小endian数据(尝试在Matlab、java中读取,它仍然是小endian)。我尝试更改字节顺序,如下所示,但没有效果。很抱歉,这是个愚蠢的问题

sys.byteorder = 'big'
for frame in range (0,1)
    fid.write(array)
fid.close()
sys.byteorder = 'little';
下面的线程似乎是相关的,但是如果我试图用struct.pack更改字节顺序,我会被写入垃圾


您可以使用
数据类型说明符更改numpy数组的字节顺序:

>>> import numpy as np
>>> a = np.arange(5, dtype=np.uint16)
>>> a.dtype.str
'<u2'
>>> b = a.astype('>u2')

>>> a.tostring()
b'\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00'
>>> b.tostring()
b'\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04'
>>将numpy作为np导入
>>>a=np.arange(5,dtype=np.uint16)
>>>a.dtype.str
‘u2’)
>>>a.tostring()
b'\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00'
>>>b.tostring()
b'\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04'