python - 从 numpy 数组中随机选择行

标签 python numpy

我想从 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/

相关文章:

python - 尝试从网页中提取一些数据(抓取初学者)

python - float() : 0. 000001 的无效文字,如何修复错误?

python - Cython fatal error : Python. h 没有这样的文件或目录

python - 通过kaggle内核中的代码生成的文件存储在哪里?

python - 何时使用 np.quantile 和 np.percentile?

python - 跨多维数组的矢量化 NumPy linspace

python - 用django自己加入postgresql

python - 值错误: Error parsing datetime string NumPy

python - 所有字符串列表到 numpy float 数组

python - python pandas 中的 Groupby : Fast Way