0
我在閱讀python中的二進制文件並繪製它時遇到了問題。它應該是一個代表1000x1000整數數組的無格式二進制文件。我已經使用:將二進制文件讀入二維數組python
image = open("file.dat", "r")
a = np.fromfile(image, dtype=np.uint32)
打印的長度返回500000.我想不出如何創建一個二維數組。
我在閱讀python中的二進制文件並繪製它時遇到了問題。它應該是一個代表1000x1000整數數組的無格式二進制文件。我已經使用:將二進制文件讀入二維數組python
image = open("file.dat", "r")
a = np.fromfile(image, dtype=np.uint32)
打印的長度返回500000.我想不出如何創建一個二維數組。
由於您使用
a = np.fromfile(image, dtype=np.uint32)
,那麼你將使用
a = np.fromfile(image, dtype=np.uint16)
還有其他的可能性得到一百萬uint16
S,然而得到一百萬uint32
同父異母。在D型可以是任何一個16位整數D型如
>i2
(big-endian的16位有符號整數),或<i2
(little-endian的16位有符號整數),或<u2
(小端16位無符號整數)或>u2
(big-endian 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),使用重塑的數組:
arr = arr.reshape(1000, 1000)
如果是二進制的,你應該用'RB打開' – 2015-03-31 23:42:11