scipy.io
是 SciPy 库中的一个子模块,主要用于读写不同格式的文件,尤其是 MATLAB 文件(.mat
)。以下是 scipy.io
的详细介绍和使用示例,从简单到复杂:
1. 导入和安装 scipy
首先,确保安装了 SciPy 库。可以通过 pip 进行安装:
pip install scipy
然后,导入 scipy.io
:
from scipy import io
2. 读写 MATLAB 文件
读取 MATLAB 文件 (loadmat
)
scipy.io.loadmat
函数用于读取 .mat
文件。以下是一个简单的例子:
import scipy.io
# 读取 MAT 文件
data = scipy.io.loadmat('example.mat')
# 查看文件中包含的变量
print(data.keys())
这段代码读取了一个名为 example.mat
的 MATLAB 文件,并打印出文件中包含的变量名。返回的 data
是一个字典,其中键是变量名,值是对应的数据。
写入 MATLAB 文件 (savemat
)
scipy.io.savemat
函数用于将数据写入 .mat
文件。以下是一个示例:
import numpy as np
import scipy.io
# 创建一些数据
data = {
'array1': np.array([1, 2, 3]),
'array2': np.array([[1, 2], [3, 4]])
}
# 写入 MAT 文件
scipy.io.savemat('example.mat', data)
这段代码创建了一些 NumPy 数组,并将它们写入名为 example.mat
的 MATLAB 文件中。savemat
函数将字典中的键作为变量名,值作为变量的数据写入文件。
3. 查看 MATLAB 文件内容 (whosmat
)
如果你不想加载整个文件,只想查看 .mat
文件中的概要内容,可以使用 whosmat
函数:
import scipy.io
# 查看 MAT 文件中的变量信息
mat_file_content = scipy.io.whosmat('example.mat')
print(mat_file_content)
这段代码将打印出 example.mat
文件中每个变量的名称、大小和数据类型。
4. 复杂示例:处理多个数据
如果你需要从 .mat
文件中读取多个数据,只需注意与文件中的数据命名对应即可。以下是一个示例:
import scipy.io
# 加载包含多个变量的 MAT 文件
data_all = scipy.io.loadmat('data.mat')
# 打印所有变量及其形状
for key in data_all:
print(f"{key}: {data_all[key].shape}")