whosmat#
- scipy.io.whosmat(file_name, appendmat=True, **kwargs)[source]#
列出 MATLAB 文件中的变量。
- 参数:
- file_name字符串
mat 文件名(如果 appendmat==True,则无需 .mat 扩展名)。也可以传入已打开的文件类对象。
- appendmat布尔值, 可选的
如果给定文件名中不存在 .mat 扩展名,则设置为 True 会在文件名末尾添加该扩展名。默认为 True。
- byte_order字符串或 无, 可选的
默认为 None,表示从 mat 文件中猜测字节顺序。否则可以是 ('native', '=', 'little', '<', 'BIG', '>') 中的一个。
- mat_dtype布尔值, 可选的
如果为 True,则返回与加载到 MATLAB 中时具有相同 dtype 的数组(而不是它们保存时具有的 dtype)。
- squeeze_me布尔值, 可选的
是否挤压单位矩阵维度。
- chars_as_strings布尔值, 可选的
是否将字符数组转换为字符串数组。
- matlab_compatible布尔值, 可选的
返回与 MATLAB 加载时相同的矩阵(意味着 squeeze_me=False, chars_as_strings=False, mat_dtype=True, struct_as_record=True)。
- struct_as_record布尔值, 可选的
是否将 MATLAB 结构体加载为 NumPy 记录数组,或加载为带有 dtype=object 的旧式 NumPy 数组。将此标志设置为 False 将重现 SciPy 0.7.x 版本的行为(返回 numpy 对象数组)。默认设置为 True,因为它允许更方便地往返加载和保存 MATLAB 文件。
- 返回:
- variables元组列表
一个元组列表,每个元组包含矩阵名称(字符串)、其形状(整数元组)及其数据类(字符串)。可能的数据类有:int8, uint8, int16, uint16, int32, uint32, int64, uint64, single, double, cell, struct, object, char, sparse, function, opaque, logical, unknown。
备注
支持 v4 (级别 1.0)、v6 和 v7 至 7.2 版本的 mat 文件。
您需要一个 HDF5 Python 库来读取 MATLAB 7.3 格式的 mat 文件(例如 h5py)。由于 SciPy 不提供此库,因此我们在此处不实现 HDF5 / 7.3 接口。
0.12.0 版本新增。
示例
>>> from io import BytesIO >>> import numpy as np >>> from scipy.io import savemat, whosmat
创建一些数组,并使用
savemat
将它们写入BytesIO
实例。>>> a = np.array([[10, 20, 30], [11, 21, 31]], dtype=np.int32) >>> b = np.geomspace(1, 10, 5) >>> f = BytesIO() >>> savemat(f, {'a': a, 'b': b})
使用
whosmat
检查f
。输出列表中的每个元组都给出f
中数组的名称、形状和数据类型。>>> whosmat(f) [('a', (2, 3), 'int32'), ('b', (1, 5), 'double')]