如何拆分scipy.io加载.mat文件后单单元格内打包的多个数值
解决方案
- 报错
string operation on non-string array的核心原因是np.char系列方法仅支持字符串类型数组操作,你看到的空格分隔的数值是numpy数组的默认打印格式,并非数值被打包在同一个字符串单元格中。
第一步:先排查数据结构
执行以下代码确认数据格式:
import numpy as np # 输出szum_1的类型、维度、元素类型 print("szum_1类型:", type(szum_1)) print("szum_1维度:", szum_1.shape) print("szum_1元素类型:", szum_1.dtype) # 输出第一个元素的属性 if szum_1.size >=1: first_elem = szum_1[0] print("第一个元素类型:", type(first_elem)) print("第一个元素维度:", first_elem.shape if hasattr(first_elem, 'shape') else "非数组类型")
分场景处理
场景1:元素类型为float/int等数值类型
说明你已经直接加载得到了数值数组,不需要拆分操作。如果是行向量/列向量的二维数组,拉平后即可直接索引取值:
# 拉平为一维数组 szum_1_flat = szum_1.flatten() # 直接取对应位置的数值,例:取第3个数值 print(szum_1_flat[2])
场景2:szum_1为object类型数组,单元素内嵌套了所有数值数组
直接提取嵌套的数组即可:
# 提取嵌套的数值数组,再拉平 szum_1_extract = szum_1[0].flatten() # 索引取值 print(szum_1_extract[2])
场景3:确认存储的是字符串格式的数值集合(概率极低)
先转成普通字符串再拆分转换为数值数组:
# 去除括号后按空格拆分,过滤空值后转成float数组 raw_str = str(szum_1[0]).strip("[]") num_list = [float(i) for i in raw_str.split() if i] szum_1_arr = np.array(num_list)
内容的提问来源于stack exchange,提问作者Yanosik
相关产品推荐
相关产品推荐

