【Numpy】中np.random.shuffle()与np.random.permutation()的用法和区别

参考: https://www.cnblogs.com/keye/p/10794322.html

  • 对给定的数组进行重新排列的方式主要有两种:
  1. np.random.shuffle(x) :在原数组上进行,改变自身序列,无返回值
  2. np.random…permutation(x) :不在原数组上进行,返回新的数组,不改变自身数组

1. np.random.shuffle(x)

1. 对一维数组重新排序:

import numpy as np

arr = np.arange(10)
print(arr)

np.random.shuffle(arr)
print(arr)

【Numpy】中np.random.shuffle()与np.random.permutation()的用法和区别_第1张图片

2. 对多维数组重新排序:

arr = np.arange(12).reshape(3,4)
print(arr)

np.random.shuffle(arr)
print(arr)

np.random.shuffle(arr)
print(arr)

【Numpy】中np.random.shuffle()与np.random.permutation()的用法和区别_第2张图片
通过上述例子可以看出,对于一个多维的输入,只是在第一维上进行了随机排序。例如对这个3×4的矩阵来说,只是对行进行随机排序。

2. np.random.permutation(x)

1. 可直接生成一个随机排列的数组:

np.random.permutation(10)

在这里插入图片描述

2. 对一维数组随机排序:

>>> import numpy as np
>>> a=np.random.permutation([0,1,2,3,4,5,6,7,8,9])
>>> print(a)

在这里插入图片描述
在这里插入图片描述

3. 对多维数组随机排序:

arr = np.arange(9).reshape((3, 3))
print(arr)

arr2 = np.random.permutation(arr)
print(arr)
print(arr2)

【Numpy】中np.random.shuffle()与np.random.permutation()的用法和区别_第3张图片
通过上述例子可以看出,对于一个多维的输入,只是在第一维上进行了随机排序。例如对这个3×3的矩阵来说,只是对行进行随机排序。

3. np.random.shuffle(x) 与 np.random.permutation(x) 的区别:

  • 从代码可以看出,两个函数的功能类似。np.random.shuffle(x)改变自身数组,np.random.permutation(x)不改变自身数组。

你可能感兴趣的:(python,numpy,random)