I want to replicate MATLAB's randperm()
with NumPy.
Currently, to get randperm(n, k)
I use np.random.permutation(n)[:k]
. The problem is it allocates an array of size n
then takes only k
entries of it.
Is there a more memory efficient way to directly create the array?
CodePudding user response:
I can recommend you np.random.choice(n, k, replace = False)
.
Yet, I am not sure about memory efficiency.
Please refer to docs
CodePudding user response:
Based on @TaQ answer:
np.random.choice(n, k, replace = False)
Is the equivalent to MATLAB's randperm()
.
Update: I will update his answer as well to mark it.