gpt4 book ai didi

python - 将二进制文件读入二维数组python

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:56 25 4
gpt4 key购买 nike

我在用 python 读取二进制文件并绘制它时遇到问题。它应该是一个未格式化的二进制文件,代表一个 1000x1000 的整数数组。我用过:

image = open("file.dat", "r")
a = np.fromfile(image, dtype=np.uint32)

打印长度返回 500000。我不知道如何用它创建一个二维数组。

最佳答案

既然你得到了五十万uint32使用

a = np.fromfile(image, dtype=np.uint32) 

那么你将得到一百万uint16使用

a = np.fromfile(image, dtype=np.uint16) 

然而,还有其他可能性。 dtype 可以是任何 16 位整数 dtype,例如

  • >i2 (big-endian 16-bit signed int), 或
  • <i2 (little-endian 16-bit signed int), 或
  • <u2 (little-endian 16-bit unsigned int), 或
  • >u2 (大端 16 位无符号整数)。

np.uint16<u2 相同或 >u2取决于您机器的字节顺序。


例如,

import numpy as np
arr = np.random.randint(np.iinfo(np.uint16).max, size=(1000,1000)).astype(np.uint16)
arr.tofile('/tmp/test')
arr2 = np.fromfile('/tmp/test', dtype=np.uint32)
print(arr2.shape)
# (500000,)

arr3 = np.fromfile('/tmp/test', dtype=np.uint16)
print(arr3.shape)
# (1000000,)

然后要获得形状为 (1000, 1000) 的数组,请使用 reshape:

arr = arr.reshape(1000, 1000)

关于python - 将二进制文件读入二维数组python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com