I installed numpy1.8.2
and then I tried the following code:
import numpy as np
a = np.arange(10)
print a, np.random.shuffle(a)
but
Sir, it must output that way. .shuffle()
returns None
>>> import numpy as np
>>> print np.random.shuffle.__doc__
shuffle(x)
Modify a sequence in-place by shuffling its contents.
Parameters
----------
x : array_like
The array or list to be shuffled.
Returns
-------
None
Examples
--------
>>> arr = np.arange(10)
>>> np.random.shuffle(arr)
>>> arr
[1 7 5 2 9 4 3 6 0 8]
This function only shuffles the array along the first index of a
multi-dimensional array:
>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.shuffle(arr)
>>> arr
array([[3, 4, 5],
[6, 7, 8],
[0, 1, 2]])
shuffle
works in place and therefore does not return a value.
In [1]: x = range(9)
In [2]: x
Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8]
In [5]: print numpy.random.shuffle(x)
None
In [6]: x
Out[6]: [8, 7, 3, 4, 6, 0, 5, 1, 2]
np.random.shuffle
doesn't return anything but rather shuffles the array in place.
Try the following instead
print np.random.shuffle(a), a
You'll see that your array was indeed shuffled as you applied the function to the array before printing it.
If you want to 'shuffle' out of place then use np.random.permutation.
e.g.
In [1]: import numpy as np
In [2]: np.random.permutation([1,2,3,4,5])
Out[2]: array([3, 5, 1, 4, 2])