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]
Другие вопросы по тегам