我正在尝试规范化我的数据,我需要迭代训练和测试集。我尝试了不同的方法,但是我得到了这个错误list indices must be integers or slices, not list。我试着把range()和len()放在一起,但还是得到了同样的错误。
代码:
def minMaxNrom(training_data, testing_data):
for i in training_data:
for j in training_data:
new_data = training_data[i][j] - min(j) / max(j) - min(j)
for i in testing_data:
for j in testing_data:
new_testing_data = testing_data[i][j] - min(j) / max(j) - min(j)
return (new_data, new_testing_data) 发布于 2019-05-31 11:33:48
您正在使用列表作为索引。您可能想要使用enumerate。这将修复您的错误:
def minMaxNrom(training_data, testing_data):
for indi, i in enumerate(training_data):
for indj, j in enumerate(training_data):
new_data = training_data[indi][indj] - min(j) / max(j) - min(j)
for indi, i in enumerate(testing_data):
for indj, j in enumerate(testing_data):
new_testing_data = testing_data[indi][indj] - min(j) / max(j) - min(j)
return (new_data, new_testing_data)有些猜测是关于你想要达到什么目的
在没有更多信息的情况下,很难知道为什么在修复can't use list as index问题后代码会失败,但我的猜测是:
def minMaxNrom(training_data, testing_data):
new_data = []
new_testing_data = []
for indi, i in enumerate(training_data):
for indj, j in enumerate(training_data):
new_data.append((training_data[indi][indj] - min(j)) / (max(j) - min(j)))
for indi, i in enumerate(testing_data):
for indj, j in enumerate(testing_data):
new_testing_data.append((testing_data[indi][indj] - min(j)) / (max(j) - min(j)))
return (new_data, new_testing_data)解释
假设你有:
training_data = [[1, 2], [3, 4, 5], [4, 4, 4]]
for i in training_data:
print(i)这将打印以下内容:
[1, 2]
[3, 4, 5]
[4, 4, 4]如您所见,这里的i是每个子列表。但是要通过引用访问这些子列表,您需要:
print(training_data[0]) # gives first sublist
print('---')
print(training_data[1]) # gives second sublist
print('---')
print(training_data[2]) # gives third sublist这将提供:
[1, 2]
---
[3, 4, 5]
---
[4, 4, 4]请注意,为了访问这些子列表,我们使用数字作为索引,而不是列表(这就是您使用的列表)。因此,为了访问每个列表并获取它的索引,我们使用enumerate (对于i来说,更好的变量名应该是sublist):
for indi, i in enumerate(training_data):
print('indi: ', indi)
print('i: ', i)
print('training_data[indi]: ', training_data[indi])
print('---')这提供了:
indi: 0
i: [1, 2]
training_data[indi]: [1, 2]
---
indi: 1
i: [3, 4, 5]
training_data[indi]: [3, 4, 5]
---
indi: 2
i: [4, 4, 4]
training_data[indi]: [4, 4, 4]https://stackoverflow.com/questions/56388270
复制相似问题