【发布时间】:2021-06-28 03:42:05
【问题描述】:
假设我有一个很长的数组,并且我想返回该数组子集的随机排列...如何在不必排列整个数组的情况下做到这一点?
我能想到的方式是
import numpy
N = 10000000 # total number of elements
n = 20 # number of elements that I am interested in getting from the permutation
x = numpy.random.permutation(numpy.arange(N))[:n] # this permutes the whole array
基本上,我需要选择大于或等于0且小于N的唯一整数n...
我知道明确地做到这一点很容易,但是 python 中的任何模块中是否有 numpy 方式或函数可以像 MATLAB 中的 randperm(N,n) 一样工作?
到目前为止,我只找到了与我在此处描述的内容不同的 Python 示例。
【问题讨论】:
-
鉴于源数组很大,并且您不知道有多少元素在您所需的范围内,那么使用Reservoir Sampling 的改编可能会适合。
标签: python arrays numpy random permutation