2017-10-10 171 views
-3

我正在嘗試編寫交叉驗證代碼,並且需要遍歷集合並拆分訓練和測試數據。我想它以下列方式拆分,但代碼不編譯從列表中獲取子列表

import numpy as np 
X = np.array([[1,2], [3,4], [5,6]]) 
n_folds = 3 

for n in range(n_folds): 
    test_fold = X[n] 
    train_folds = X[x for x in range(n_folds) if x != n] 
    print train_folds, test_fold 

預計輸出

[3,4,5,6], [1,2] 
[1,2,5,6], [3,4] 
[1,2,3,4], [5,6] 

有沒有一種方法,我可以實現這一點?

+4

在1.6k +代表你應該知道你應該分享你得到的錯誤。 – Julien

回答

3

添加額外的括號:

X[[x for x in range(n_folds) if x != n]] 

內部支架創建一個列表(理解),外的人告訴numpy的使用該列表中的高級索引。