如何从numpy数组中随机选择N个不重复的索引元素?

3

假设我有一个定义为numpy数组:

X = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

现在,我想从这个数组中随机选择3个元素,但不重复,所以我会得到类似这样的结果:
X_random_draw = numpy.array([5, 0, 9]

如何以最小的努力和最大的性能速度实现类似这样的东西?提前感谢您。
1个回答

8

使用NumPy 1.7或更新版本,可以使用np.random.choice函数,并设置参数replace=False

In [85]: X = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [86]: np.random.choice(X, 3, replace=False)
Out[86]: array([7, 5, 9])

谢谢。我该如何扩展这个功能,例如对于二维数组?比如说,X = numpy.array([[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]),我想随机抽取其中两个元素,以便得到 X_rand = numpy.array([[4, 5], [0, 1]]) - bluevoxel
1
0,...,X.shape[0] 中选择2个项目,然后使用整数索引:X[np.random.choice(X.shape[0], 2, replace=False)] - unutbu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接