我想从 numpy 数组中随机选择行。假设我有这个数组-
A = [[1, 3, 0],
[3, 2, 0],
[0, 2, 1],
[1, 1, 4],
[3, 2, 2],
[0, 1, 0],
[1, 3, 1],
[0, 4, 1],
[2, 4, 2],
[3, 3, 1]]
要随机选择 6 行,我这样做:
B = A[np.random.choice(A.shape[0], size=6, replace=False), :]
我想要另一个数组 C
,其中包含未在 B 中选择的行。
是否有一些内置方法可以做到这一点,或者我是否需要进行暴力破解,用 A 行检查 B 行?
最佳答案
您可以通过对打乱的行索引序列进行切片来对 A
进行任意数量的按行随机分区:
ind = numpy.arange( A.shape[ 0 ] )
numpy.random.shuffle( ind )
B = A[ ind[ :6 ], : ]
C = A[ ind[ 6: ], : ]
如果你不想改变每个子集中行的顺序,你可以对索引的每个切片进行排序:
B = A[ sorted( ind[ :6 ] ), : ]
C = A[ sorted( ind[ 6: ] ), : ]
(请注意,@MaxNoe 提供的解决方案还保留了行顺序。)
关于python - 从 numpy 数组中随机选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34370063/