我有一个代码可以读取一个文件并保存到矩阵中。但是我想读取几个文件并将其保存到一个矩阵中。但是,当我尝试扩展代码以处理多个文件时,出现以下错误消息“数组的索引过多”,当我只读取一个文件时却没有得到
我试图使用函数而不是for循环,并且尝试以不同的方式应用索引(如StackOverflow上此处的其他一些线程所示),但这没有用。
这部分代码无法正常工作:
r=r[1:lengthOfDataset,1:numberOfColumns]
我的完整代码:
dataPath = ['ABB-2018-03-26-2019-03-26.csv',
'ALFA-2018-03-26-2019-03-26.csv',
'ALIV-SDB-2018-03-26-2019-03-26.csv',...]
lengthOfDataset=252
numberOfColumns=10
data=np.zeros([len(dataPath),lengthOfDataset-1,numberOfColumns-1])
for i in range(len(dataPath)):
data[i]=readAndConvertFile(dataPath[i])
def readAndConvertFile(F):
with open(F, 'r') as f:
reader = csv.reader(f, delimiter=';')
lists = list(reader)
r = np.array(lists)
r=r[1:lengthOfDataset,1:numberOfColumns]
for j in range(lengthOfDataset-1):
for k in range(numberOfColumns-1):
r[j,k]=num(r[j,k])
return r
def num(s):
try:
s=s.replace(',','.')
s=float(s)
return s
except ValueError:
return 0
答案 0 :(得分:0)
如果从仅包含一个元素的列表中创建一个numpy数组,则将获得形状为(,1)(仅一维)的数组,而如果列表中包含更多元素,则将得到像(文件数,1)(二维)这样的形状。我建议在创建numpy数组r
后重塑它。
np.reshape(r,(-1,1))
这可以确保r
始终具有两个维度,而无需指定行数。