What is the difference between numpy.random.shuffle(x)
and numpy.random.permutation(x)
?
I have read the doc pages but I could not understand if there was any difference between the two when I just want to randomly shuffle the elements of an array.
To be more precise suppose I have an array x=[1,4,2,8]
.
If I want to generate random permutations of x, then what is the difference between shuffle(x)
and permutation(x)
?
np.random.permutation
has two differences from np.random.shuffle
:
np.random.shuffle
shuffles the array inplacenp.random.shuffle(np.arange(n))
If x is an integer, randomly permute np.arange(x). If x is an array, make a copy and shuffle the elements randomly.
The source code might help to understand this:
3280 def permutation(self, object x):
...
3307 if isinstance(x, (int, np.integer)):
3308 arr = np.arange(x)
3309 else:
3310 arr = np.array(x)
3311 self.shuffle(arr)
3312 return arr