按行读取84高光谱影像python代码
时间: 2023-09-10 13:11:19 浏览: 74
以下是一个示例代码,可以按行读取84高光谱影像:
```python
import numpy as np
# 读取84高光谱影像
with open("84_hsi_image.dat", "r") as f:
lines = f.readlines()
# 获取影像的行数和列数
num_rows = int(lines[0].split()[0])
num_cols = int(lines[0].split()[1])
# 初始化影像数组
image = np.zeros((num_rows, num_cols, 84))
# 逐行读取数据并存入影像数组
for i in range(num_rows):
line = lines[i+1].split()
for j in range(num_cols):
for k in range(84):
image[i, j, k] = float(line[j*84+k])
# 输出影像数组的形状
print("影像数组的形状为:", image.shape)
```
解释一下这段代码的流程:
首先打开 "84_hsi_image.dat" 文件,使用 `readlines()` 方法读取文件中的所有行,保存在 `lines` 列表中。
文件的第一行包含影像的行数和列数,使用 `split()` 方法获取并转化为整数类型。
然后,初始化一个三维的数组 `image`,其维度为 `(num_rows, num_cols, 84)`,表示行数、列数和波段数。
接下来,使用一个循环逐行读取数据,并将其存入 `image` 数组中。每一行数据都是一个字符串,使用 `split()` 方法将其转化为一个包含 84 个元素的列表。然后,将这些元素转化为浮点数,并存入 `image` 数组中的相应位置。
最后,输出影像数组的形状。