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

如何从Python加载的.mat文件中提取纯字符串?

提取.mat文件加载后嵌套数组中的纯字符串

嘿,这个问题我之前也碰到过!MATLAB的cell数组加载到Python里确实会变成这种嵌套的numpy数组结构,提取纯字符串其实很简单,给你几种实用的方法:

方法1:列表推导式 + 数组扁平化

这是最直观的方法,先把二维的featurenames数组扁平化,再逐个提取每个嵌套数组里的字符串:

import scipy.io

data = scipy.io.loadmat(pathName)
featurenames = data['featurenames']

# 提取纯字符串
pure_strings = [name[0] for name in featurenames.flatten()]
  • featurenames.flatten():把二维数组转换成一维数组,方便遍历每个嵌套的单元素数组
  • name[0]:取出每个单元素数组里的字符串内容

针对你示例中的featurenames[0:2,0],可以直接这样处理:

subset_pure_strings = [arr[0] for arr in featurenames[0:2,0]]
print(subset_pure_strings)

输出会是:

['Intensity_SubsBlue_Nuclei_1_IntegratedIntensity', 'Intensity_SubsBlue_Nuclei_2_MeanIntensity']

方法2:使用numpy的.flat属性

.flat会返回数组的一维迭代器,用法和上面类似:

pure_strings = [item[0] for item in featurenames.flat]

方法3:批量转换(适合大规模数据)

如果你的featurenames规模较大,可以用numpy的向量化操作一次性提取:

pure_strings = featurenames.astype(str).flatten().tolist()
  • featurenames.astype(str):把整个数组的元素转换成字符串类型
  • .flatten().tolist():扁平化后转成Python列表

为什么会出现这种嵌套结构?

这是因为MATLAB中的字符串cell数组,在scipy.io.loadmat加载后会被映射为二维numpy数组,每个元素是一个包含单个字符串的numpy数组——这是两种语言数据模型差异导致的,只要针对性提取就好啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:03:00