如何以给定的概率从矩阵中 select 点?

How to select points from matrix with given probability?

我有一个numpy.ndarray points代表一组坐标点:

[[0 0]
 [0 1]
 [0 2]
 [1 0]
 [1 1]
 [1 2]
 [2 0]
 [2 1]
 [2 2]]

我想得到这些点的一个子集 some_points,其中每个点都是以 prob 的概率独立获取的。我怎样才能只使用 numpy?

P.S。例如,如果 prob=0.5 some_points 将包含大约一半的原始点数。

例如,您可以创建一个包含来自均匀分布的 n 个样本的向量,其中 n 是点的数量,并将它们与您想要的概率进行比较。对于所有小于你取对应点的概率的样本。在代码中

import numpy as np
prob = 0.5
some_points = points[np.random.rand(points.shape[0]) < prob, :]
n = points.size
some_points = points[np.random.rand(n * n) < p]