2017-09-13 66 views
0

我在2D numpy數組中有數據。我想將其行分成三個60%,20%,20%大小的子集。我嘗試使用numpy.split函數,但它只創建相同大小的子陣列。我也試過sklearn庫中的KFold方法,但它不允許我指定子集大小。而sklearn的洗牌分割,只允許分成兩個子集。我知道我可以使用shufflesplit將數據拆分兩次以創建三個子集,但是我想知道是否有更好的方法來完成它。隨機並將NumPy數組劃分爲不等數部分

+0

是對所需的分割隨機? –

+0

@Baha是的,我希望它在拆分之前洗牌, –

回答

1

您可以使用np.random.shuffle,然後分配切片。

x = ... 
np.random.shuffle(x) 
l = x.shape[0] 
A, B, C = x[: int(l * .6)], x[int(l * .6) : int(l * .8)], x[int(l * .8):] 
1
  1. 洗牌陣列
  2. 分割成3份

import numpy 
# assuming your dataset is like x: x for dataset 
x = numpy.random.rand(100, 10) 
# what you can do 
numpy.random.shuffle(x) 
split1, split2 = 60, 80 
part1, part2, part3 = x[:split1,:], x[split1:split2,:], x[split2:,:]