Skip to content Skip to sidebar Skip to footer

Numpy.random.shuffle Returns None

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 its output is : [0 1 2 3 4 5 6 7 8 9] None I don

Solution 1:

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)
NoneIn [6]: x
Out[6]: [8, 7, 3, 4, 6, 0, 5, 1, 2]

Solution 2:

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])

Solution 3:

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
        [1752943608]

        This functiononlyshufflesthearrayalongthefirstindexofamulti-dimensionalarray:

        >>> arr = np.arange(9).reshape((3, 3))
        >>> np.random.shuffle(arr)
        >>> arr
        array([[3, 4, 5],
               [6, 7, 8],
               [0, 1, 2]])

Solution 4:

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.

Post a Comment for "Numpy.random.shuffle Returns None"