numpy.random.shuffle returns None

前端 未结 4 879
旧时难觅i
旧时难觅i 2021-01-21 10:19

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

相关标签:
4条回答
  • 2021-01-21 11:00

    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]])
    
    0 讨论(0)
  • 2021-01-21 11:05

    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]
    
    0 讨论(0)
  • 2021-01-21 11:11

    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.

    0 讨论(0)
  • 2021-01-21 11:17

    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])
    
    0 讨论(0)
提交回复
热议问题