2017-02-21 181 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] 
相關問題