NumPy:numpy.random.shuffle不存在

时间:2014-08-26 21:21:03

标签: python numpy pycharm

我安装了numpy1.8.2,然后尝试了以下代码:

import numpy as np
a = np.arange(10)
print a, np.random.shuffle(a)

但其输出是:

[0 1 2 3 4 5 6 7 8 9] None

我不知道为什么它会返回None,根据doc它应该可以工作!我无法弄清楚这个问题。

我在Windows 7上使用PyCharm 3.1

4 个答案:

答案 0 :(得分:4)

shuffle适用,因此不会返回值。

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]

答案 1 :(得分:2)

先生,它必须以这种方式输出。 .shuffle() 会返回 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]])

答案 2 :(得分:1)

np.random.shuffle不会返回任何内容,而是将数组调整到位。 请尝试以下

print np.random.shuffle(a), a

在打印之前,当你将函数应用到数组时,你会看到你的数组确实被洗牌了。

答案 3 :(得分:0)

如果要“随机播放”到位,请使用np.random.permutation

例如

In [1]: import numpy as np

In [2]: np.random.permutation([1,2,3,4,5])
Out[2]: array([3, 5, 1, 4, 2])