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

如何拆分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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:57:01