假设我有一个定义为numpy数组:
X = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
现在,我想从这个数组中随机选择3个元素,但不重复,所以我会得到类似这样的结果:
X_random_draw = numpy.array([5, 0, 9]
如何以最小的努力和最大的性能速度实现类似这样的东西?提前感谢您。
使用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]])
? - bluevoxel0,...,X.shape[0]
中选择2个项目,然后使用整数索引:X[np.random.choice(X.shape[0], 2, replace=False)]
。 - unutbu