Python назначить некоторую часть списка другому списку
У меня есть набор данных, как показано ниже: В этом наборе данных первый столбец представляет идентификатор человека, последний столбец - это метка этого человека, а остальные столбцы - это особенности человека.
101 166 633.0999756 557.5 71.80000305 60.40000153 2.799999952 1 1 -1
101 133 636.2000122 504.3999939 71 56.5 2.799999952 1 2 -1
105 465 663.5 493.7000122 82.80000305 66.40000153 3.299999952 10 3 -1
105 133 635.5999756 495.6000061 89 72 3.599999905 9 6 -1
105 266 633.9000244 582.2000122 93.59999847 81 3.700000048 2 2 -1
105 299 618.4000244 552.4000244 80.19999695 66.59999847 3.200000048 3 64 -1
105 99 615.5999756 575.7000122 80 67 3.200000048 0 0 -1
120 399 617.7000122 583.5 95.80000305 82.40000153 3.799999952 8 10 1
120 266 633.9000244 582.2000122 93.59999847 81 3.700000048 2 2 1
120 299 618.4000244 552.4000244 80.19999695 66.59999847 3.200000048 3 64 1
120 99 615.5999756 575.7000122 80 67 3.200000048 0 0 1
Моя цель - классифицировать этих людей, и я хочу использовать метод "оставь одного человека" в качестве метода разделения. Поэтому мне нужно выбрать одного человека и все его данные в качестве тестовых данных, а остальные данные для обучения. Но при попытке выбрать тестовые данные я реализовал операцию назначения списка, но это дало ошибку. Это мой код:
`import numpy as np
datasets=["raw_fixationData.txt"]
file_name_array=[101,105,120]
for data in datasets:
data = np.genfromtxt(data,delimiter="\t")
data=data[1:,:]
num_line=len(data[:,1])-1
num_feat=len(data[1,:])-2
label=num_feat+1
X = data[0:num_line+1,1:label]
y = data[0:num_line+1,label]
test_prtcpnt=[]; test_prtcpnt_label=[]; train_prtcpnt=[]; train_prtcpnt_label=[];
for i in range(len(file_name_array)):
m=0; # test index
n=0 #train index
for j in range(num_line):
if X[j,0]==file_name_array[i]:
test_prtcpnt[m,0:10]=X[j,0:10];
test_prtcpnt_label[m]=y[j];
m=m+1;
else:
train_prtcpnt[n,0:10]=X[j,0:10];
train_prtcpnt_label[n]=y[j];
n=n+1; `
Этот код дает мне эту ошибку test_prtcpnt[m,0:10]=X[j,0:10]; TypeError: list indices must be integers or slices, not tuple
Как я мог решить эту проблему?
1 ответ
Я думаю, что вы неправильно используете нотацию Python. Пожалуйста, обратитесь к следующему сообщению переполнения стека нарезки:
Объясните обозначение среза Python
В этом случае интерпретатор Python, кажется, интерпретирует test_prtcpnt[m,0:10]
как кортеж Возможно ли, что вы хотели сказать следующее:
test_prtcpnt[0:10]=X[0:10]