我安装了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
。
答案 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])