我在多个问题中发现了这个错误,但没有修复或解释 防爆。 Reading in single str column with loadtxt
我对以下行(import numpy as np
)
symbols = np.loadtxt('filename.csv',
dtype={'names': ('ticker', 'year', 'month','day'),
'formats': ('S10','i4','i2','i2')},
delimiter=',',skiprows=1, usecols=(0,))
以下数据
ticker year month day
GPD.TO 2010 8 16
HAO.V 2010 8 16
RDS.V 2010 8 16
MD.V 2010 8 16
它给了我一个
IndexError: list index out of range
当我在没有usecols
的情况下运行该行时,它可以正常运行并返回所有4列。
我在google和Stackoverflow上查看了很多其他问题但是没有回答
答案 0 :(得分:4)
如果您想将usecols = (0,)
与np.loadtxt
一起使用,则必须更改dtype
以匹配:
import numpy as np
symbols = np.loadtxt('filename.csv',
dtype={'names': ('ticker', ),
'formats': ('S10',)},
delimiter=',',
skiprows=1,
usecols=(0,)
)
print(symbols)
filename.csv
:
ticker,year,month,day
GPD.TO,2010,8,16
HAO.V,2010,8,16
RDS.V,2010,8,16
MD.V,2010,8,16
产量
[('GPD.TO',) ('HAO.V',) ('RDS.V',) ('MD.V',)]
或者,使用np.genfromtxt
,您无需更改dtype
:
symbols = np.genfromtxt('filename.csv',
dtype={'names': ('ticker', 'year', 'month','day'),
'formats': ('S10','i4','i2','i2')},
delimiter=',',
skiprows=1,
usecols=(0,)
)
也可以。