2017-02-21 169 views
0

我有一个如下所示的数据集: 在此数据集中,第一列代表一个人的ID,最后一列是此人的标签,其余列是特征人。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

我怎么能解决这个问题?

+0

我想你需要使用['np.array'](https://docs.scipy.org/doc/numpy/user/basics.creation .html)而不是列表。 –

回答

1

我认为你在滥用Python的切片符号。请参考下面的堆栈溢出职位上切片:

Explain Python's slice notation

在这种情况下,Python解释似乎解释test_prtcpnt[m,0:10]作为一个元组。是否有可能你想说以下内容:

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