读取一个文件夹下所有的mat文件,并将其放进一个numpy数组中,给这个numpy数组设定一个类别编号,然后将其转化为tensor
时间: 2024-01-26 14:04:52 浏览: 114
好的,您可以使用Python中的NumPy库和PyTorch库来实现这个功能。以下是一个示例代码:
```python
import os
import numpy as np
import torch
from scipy.io import loadmat
# 文件夹路径
folder_path = 'your_folder_path'
# 获取文件夹下所有mat文件的文件名
file_names = [f for f in os.listdir(folder_path) if f.endswith('.mat')]
# 读取mat文件数据并添加到列表中
data_list = []
labels_list = []
for i, f in enumerate(file_names):
data = loadmat(os.path.join(folder_path, f))['your_data']
label = i # 设定类别编号
data_list.append(data)
labels_list.append(label)
# 将列表中的数据和标签转换成NumPy数组
data_array = np.array(data_list)
labels_array = np.array(labels_list)
# 转换成PyTorch tensor
data_tensor = torch.from_numpy(data_array)
labels_tensor = torch.from_numpy(labels_array)
print(data_tensor.shape, labels_tensor.shape)
```
在该示例代码中,我们首先指定文件夹路径,然后使用`os.listdir`函数获取该文件夹下所有的MATLAB数据文件的文件名。之后,我们遍历所有的文件名,使用`scipy.io.loadmat`函数读取MATLAB数据文件的数据,并将其添加到一个列表中。同时,我们为每个数据文件设定一个类别编号,即将其作为标签。最后,我们使用NumPy库将列表中的数据和标签转换成NumPy数组,并使用PyTorch库将其转换成PyTorch tensor。
请注意,这只是一个简单的示例,您可以根据您自己的具体要求来处理数据。同时,读取的数据可能需要进一步测试和调试才能得到正确的结果。
阅读全文