我在2D numpy数组中有数据。我想将其行分为三个子集,分别为60%,20%,20%。我尝试使用numpy.split函数,但它只创建相同大小的子数组。我也在sklearn库中尝试过KFold方法,但它不允许我指定子集大小。并且sklearn的shuffle分裂,只允许分成两个子集。我知道我可以使用shufflesplit将数据拆分两次以创建三个子集,但我想知道是否有更好的方法来实现它。
答案 0 :(得分: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)
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:,:]