我正试图规范我的数据,我需要遍历训练和测试集。我尝试了不同的方法,但收到此错误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)
答案 0 :(得分:2)
您正在使用列表作为索引。您可能要使用枚举。这将解决您的错误:
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]
请注意,要访问这些子列表,我们使用数字作为索引而不是列表(您正在使用的是列表)。因此,为了访问每个列表并获取其索引,我们使用枚举(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]