我无法在python中读取二进制文件并绘制它。它应该是一个未格式化的二进制文件,代表一个1000x1000的整数数组。我用过:
image = open("file.dat", "r")
a = np.fromfile(image, dtype=np.uint32)
打印长度返回500000.我无法弄清楚如何从中创建2D数组。
答案 0 :(得分:2)
因为你使用
获得了50万uint32
个
a = np.fromfile(image, dtype=np.uint32)
然后你将使用
获得一百万uint16
秒
a = np.fromfile(image, dtype=np.uint16)
然而,还有其他可能性。 dtype可以是任何16位整数dtype,例如
>i2
(big-endian 16位signed int)或<i2
(little-endian 16-bit signed int)或<u2
(little-endian 16-bit unsigned int)或>u2
(big-endian 16-bit unsigned int)。 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)