求助:Python中用Numpy转换表格行为数组时遇tuple.index报错
这个问题我碰到过,其实核心是Numpy没办法直接识别你拿到的那个Row对象的结构,得先把里面的数值提取出来再转数组~
几种可行的解决方法:
- 方法1:把Row转成元组再转数组
如果你的Row是具名元组(namedtuple)类型,直接用tuple()包裹它,再传给np.array()就行:
import numpy as np row = table_attributes.row(3) arr = np.array(tuple(row))
- 方法2:手动提取属性值
如果清楚Row里的属性名,也可以直接把值拿出来组成列表:
row = table_attributes.row(3) arr = np.array([row.Hemoglobin, row.Glucose])
- 方法3:通用字典提取法
不管你的Row是自定义类还是dataclass,都可以通过__dict__拿到它的属性字典,再提取值转成数组:
row = table_attributes.row(3) arr = np.array(list(row.__dict__.values()))
为啥直接转会报错?
你直接把Row对象传给np.array()时,Numpy会尝试迭代这个对象,但如果Row的迭代逻辑不是返回数值(比如可能迭代属性名),就会找不到对应元素,触发tuple.index(x): x not in tuple的错误。所以必须先把数值提取成Numpy能处理的普通可迭代类型(列表、元组)。
内容的提问来源于stack exchange,提问作者BarbG
相关产品推荐
相关产品推荐

