是什么区别numpy.random.shuffle(x)
和numpy.random.permutation(x)
?
我已阅读文档页面,但如果有任何两者之间的区别时,我只是想随机洗牌数组中的元素我无法理解。
为了更精确假设我有一个数组x=[1,4,2,8]
如果我要生成x的随机排列,然后就是什么区别shuffle(x)
和permutation(x)
?
是什么区别numpy.random.shuffle(x)
和numpy.random.permutation(x)
?
我已阅读文档页面,但如果有任何两者之间的区别时,我只是想随机洗牌数组中的元素我无法理解。
为了更精确假设我有一个数组x=[1,4,2,8]
如果我要生成x的随机排列,然后就是什么区别shuffle(x)
和permutation(x)
?
np.random.permutation
有来自两个不同np.random.shuffle
:
np.random.shuffle
洗牌阵列就地 np.random.shuffle(np.arange(n))
如果x是一个整数,随机置换np.arange(X)。 如果x是一个数组,进行复制和随机洗牌的元素。
源代码可能有助于了解这一点:
3280 def permutation(self, object x):
...
3307 if isinstance(x, (int, np.integer)):
3308 arr = np.arange(x)
3309 else:
3310 arr = np.array(x)
3311 self.shuffle(arr)
3312 return arr
添加到什么@ecatmur说, np.random.permutation
当你需要洗牌有序对,尤其是对分类是有用的:
from np.random import permutation
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
# Data is currently unshuffled; we should shuffle
# each X[i] with its corresponding y[i]
perm = permutation(len(X))
X = X[perm]
y = y[perm]