You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将numpy.ndarray类型的.mat文件转为CSV?代码问题求助

解决.mat转CSV时数据集中在单个单元格的问题

你的问题出在对loadmat返回值的处理上:loadmat加载.mat文件后返回的是字典对象,直接把字典转成numpy数组,得到的是包含键值对的结构,后续转成DataFrame自然会把所有内容压缩到单个单元格里。

修正步骤:

  1. 先查看加载后字典里的所有键,找到存储实际数据的变量名(系统自动生成的__header__、__version__、__globals__这几个键可以忽略)。
  2. 从字典中提取对应的numpy.ndarray数据。
  3. 将数组直接转换为DataFrame(二维数组可直接转换,一维数组可先转Series再转DataFrame)。
  4. 保存为CSV文件。

修正后的代码示例:

import pandas as pd
import numpy as np
from scipy.io import loadmat

# 加载.mat文件
data = loadmat(r"EAOW_FLOW_TimeSeries_1hr_LocationA1_final.mat")

# 打印所有键,找到存储实际数据的变量名
print(data.keys())

# 替换成你找到的实际数据变量名,比如假设是'EAOW_FLOW_TimeSeries'
data_array = data['EAOW_FLOW_TimeSeries']

# 转换为DataFrame
# 如果是一维数组,可改用 df = pd.DataFrame(data_array, columns=['流量数据']) 自定义列名
df = pd.DataFrame(data_array)

# 保存为CSV
df.to_csv(r"data.csv", index=False)

额外说明:

  • 如果你的数据是三维数组,需要先调整结构(比如用data_array.reshape(-1, data_array.shape[-1])降维)再转DataFrame。
  • 如果数据包含时间戳信息,可将时间戳列转换为datetime类型,方便后续分析:
    df['时间'] = pd.to_datetime(df['时间'])
    

内容的提问来源于stack exchange,提问作者Aarzoo Syed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:31:01