python 读取二进制文件 np.array
时间: 2023-11-20 21:59:44 浏览: 132
以下是使用numpy读取二进制文件的例子:
```python
import numpy as np
# 读取二进制文件
myarray = np.fromfile("./query_feature_A/00056451.dat", dtype=float)
# 打印数组长度和每个元素
print("len(myarray)::", myarray.size)
for item in myarray:
print(item)
# 另一种读取二进制文件的方法
import struct
import os
fpath='./data.bin'
f = open(fpath,'rb')
nums=int(os.path.getsize(fpath)/4) # 4 是浮点数字节
data = struct.unpack('f'*nums,f.read(4*nums)) #注意一次只能读取一次,直接再读取会报错
f.close()
data = np.array(data).reshape(-1)
```
相关问题
图像二进制数据转为np.array
在Python中,如果你已经得到了图像的二进制数据,并想要将其转换为NumPy数组(np.array),通常需要经过以下几个步骤:
1. 首先,你需要读取二进制数据并根据其格式(例如RGB、灰度等)确定每个像素的字节数。对于常见的颜色模式,如RGB(每像素3个字节)、灰度(1个字节),或者像深度为8位的图像(每个像素1个字节)。
2. 然后,根据字节数计算出总的像素数,因为图像数据通常是按行排列的。
3. 创建一个新的NumPy数组,指定正确的形状(高度、宽度、通道数)。如果你不知道具体的通道数,可以根据图像文件头的信息来判断。
4. 将二进制数据按照像素顺序逐个填充到NumPy数组中。如果二进制数据是以原始格式(如像素点的连续字节流)存储的,你可以通过循环解码每一部分作为像素值。
以下是一个简单的示例,假设我们有RGB图像:
```python
import numpy as np
from PIL import Image
# 假设binary_data是我们从文件或网络获取的二进制数据
width, height = (640, 480) # 图像尺寸,实际可通过Image模块读取
channels = 3 # RGB,如果是灰度则为1
# 解析二进制数据
np_array = np.frombuffer(binary_data, dtype=np.uint8)
np_array = np.reshape(np_array, (height, width, channels))
# 如果是灰度图像,转换为单通道
if channels == 1:
np_array = np_array[:, :, 0]
```
python读取二进制文件并将整成28*28的图像显示
好的,我来为您解答。
首先,读取二进制文件需要使用 `open()` 函数,并指定以二进制模式打开文件。代码如下:
```python
with open('file.bin', 'rb') as f:
content = f.read()
```
接着,将读取到的内容整成 28*28 的图像需要使用 Python 的图像处理库 Pillow。具体操作如下:
```python
from PIL import Image
import numpy as np
# 将字节数组转成 28*28 的图像
data = np.frombuffer(content, dtype=np.uint8)
img = Image.fromarray(data.reshape(28, 28), mode='L')
# 显示图像
img.show()
```
注意,这里使用的是灰度图像,因此使用 `L` 参数创建图像对象。使用 `numpy` 的 `frombuffer` 函数将字节数组转换为 `numpy` 数组,然后使用 `reshape` 函数将其变形为 28*28 的矩阵。最后,使用 `Image.fromarray` 函数将 `numpy` 数组转换为图像对象。
希望这个回答能够帮助到您。
阅读全文