如何为含多数据类型的.txt输入文件正确指定dtype,解决np.genfromtxt报错?
np.genfromtxt 报错TypeError: got multiple values for argument 'dtype' 解决方案
报错根因
你混淆了内置open()函数和np.genfromtxt()的入参规则:np.genfromtxt()的第二个位置参数本身就是dtype,你在文件路径后额外传入了读取模式'r'作为第二个位置参数,后续又用关键字参数显式指定了dtype的取值,相当于给同一个参数传了两次值,直接触发报错。
修复步骤
- 删掉文件路径后多余的
'r'参数,np.genfromtxt()不需要手动传入文件读取模式 - 修正
names参数的格式,移除逗号后的多余空格,避免字段名识别异常 - 读取完成后调用结构化数组的
tolist()方法,即可将结果存入你提前创建的PatDat空列表
修正后的示例代码
import numpy as np PatDat = [] input_file = np.genfromtxt( 'F:\\Admin\\Programming_Files\\BIOE Files\\Python\\input_file.txt', dtype = [('Name', '<U6'), ('Height', '<f8'), ('Weight', '<f8'), ('Sex', '<i4'), ('Age', '<i4'), ('ActLev', '<i4'), ('SBP', '<i4'), ('DBP', '<i4')], names= "Name,Height,Weight,Sex,Age,ActLev,SBP,DBP", encoding = None ) # 将读取结果存入PatDat PatDat = input_file.tolist()
可选优化:如果你的txt文件第一行就是对应字段的表头,不需要手动指定
names参数,直接设置names=True即可自动读取第一行作为字段名,降低手动配置的出错概率。
内容的提问来源于stack exchange,提问作者Nicholas Manning
相关产品推荐
相关产品推荐

