2013-11-21 64 views
1

我對python和numpy scipy包相當陌生。 我正在做一個類分配的迴歸分析,涉及在數據集上嘗試不同的迴歸技術,並查看哪一個工作。這涉及從數據集中刪除值,並查看哪個算法在減少數據集的情況下表現良好。現在我將索引達到數據集長度的一小部分。 有點像。刪除數據集的一小部分

data = np.loadtxt("filename") 
to_be_used = data[0:int(0.6(len(data)))] 

有沒有其他辦法可以做到這一點?說,我想隨機選擇60%的數據,而不是前60個元素。

subset = np.random.choice(data, int(len(data)*0.6), replace=False) 

但是,如果你想創建多個非重疊隨機集,則應該洗你的數組,然後使用:

+0

您應該創建一個新的縮小數組。無論如何,請顯示你的嘗試。初始數組和預期結果的一個簡短例子也很好。另外,只是幻想索引整個陣列有什麼問題? –

+0

減少數組有一些規則? – guisantogui

+0

對不起。我編輯了我的問題 –

回答

1

您可以從陣列使用numpy.random.choice功能搶到隨機組數據定期切片以獲取每個塊中所需的數量。例如,要將數據隨機分爲一半:

np.shuffle(data) 
one_random_half = data[:len(data)//2] 
other_random_half = data[len(data)//2:] 
+0

您的第一行代碼在第一個'len(data)'周圍缺少'np.arange(...)'。爲什麼要創建中間索引數組?爲什麼不直接在'data'上使用'np.random.choice'? – Jaime

+0

不需要'arange'調用,因爲如果你傳遞一個整數值來代替一個類似數組的對象,'choice'將會像你傳遞過去一樣工作。你是對的,但是當你可以直接在數據集上直接使用'choice'時,創建一個索引數組是很愚蠢的。我不知道爲什麼我不直接這樣做。我會編輯答案。 – Blckknght

+0

酷!不知道有關選擇。確實非常方便! – Jaime