使用numpy.loadtxt读取CSV时遇TypeError:参数需为整数的解决求助
问题修复方案
错误原因
你遇到的TypeError: argument must be an integer是因为numpy.loadtxt的skiprows参数使用错误:你传入了列表[1],但你的numpy版本要求该参数为非负整数(表示跳过开头的N行)。
另外代码还有两处问题:
- 未导入
sys模块,但代码中使用了sys.argv,运行时会触发NameError dtype定义重复冗余,所有列都是浮点数类型,无需多次声明
修正后的代码
import numpy import sys # 补充导入sys模块 infile = 'dicomfile-test.csv' print(sys.argv) if len(sys.argv) > 1: infile = sys.argv[1] xprompts, xrandoms, xduration, xheight, xweight, xdose, xuptime, xsf, xdtcf =\ numpy.loadtxt(infile, delimiter=',',\ dtype=float,\ usecols=(0,1,2,3,4,5,6,7,8), unpack=True, skiprows=1)
补充说明
skiprows=1表示跳过文件的第1行(通常是表头),这个写法兼容所有numpy版本;若你使用numpy 1.15及以上版本,也可以用skiprows=[0](行号从0开始计数)跳过指定行,但前者更直观。- 当所有列数据类型一致时,直接用
dtype=float即可,无需逐个列声明类型。
内容的提问来源于stack exchange,提问作者ksquirrel
相关产品推荐
相关产品推荐

