numpy:在大端写入 uint16 的大型二维数组

标签 numpy

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

sys.byteorder = 'big'
for frame in range (0,1)
    fid.write(array)
fid.close()
sys.byteorder = 'little';

以下线程似乎是相关的,但如果我尝试使用 struct.pack 更改字节顺序,我会收到垃圾邮件。

Convert integer to big endian binary file in python

最佳答案

您可以使用 < 强制更改 numpy 数组的字节顺序/> dtype 说明符:

>>> 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:在大端写入 uint16 的大型二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49396332/

相关文章:

python - Matplotlib:用两个 x 轴绘制 x/y 坐标并进行逆比例缩放

python - 如何更改 numpy 数组中的数据 block

python - numpy 中的多维数组乘法

python - 将 DatetimeIndex 转换为日期时间

python - 如何用python计算巨大的数字?

条件下的 Python block 数组

python - 从邻接表计算邻接矩阵的花式索引

python - 如何根据相邻元素之间的差异将列表拆分为列表列表?

python - 将 PNG 图像文件转换为像素行以保存在数据框中

python - 一个 "ij"meshgrid和一个长meshgrid的对应关系