Python将列表的某些部分分配给另一个列表

时间:2017-02-21 15:42:59

标签: python list variable-assignment training-data test-data

我有一个如下数据集: 在此数据集中,第一列表示人员的ID,最后一列是此人的标签,其余列是此人的要素。

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 个答案:

答案 0 :(得分:1)

我认为你在滥用Python的切片表示法。切片时请参考以下堆栈溢出帖子:

Explain Python's slice notation

在这种情况下,Python解释器似乎将test_prtcpnt[m,0:10]解释为元组。您是否有可能说出以下内容:

test_prtcpnt[0:10]=X[0:10]