numpy.random.shuffle打乱顺序函数

numpy.random库比Python内置的random库有更多的方法,比如生成随机数组numpy.random.randint(low[,high, size, dtype])。如果不进行科学计算,使用random.randint(a,b)就足够了。
random.shuffle()千万不要用于二维numpy.array(也就是矩阵),正确的姿势当然是使用numpy自带的numpy.random.shuffle()

1、numpy.random. shuffle(x)

shuffle()是不能直接访问的,可以导入numpy.random模块,然后通过 numpy.random 静态对象调用该方法,shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值(是对列表x中的所有元素随机打乱顺序,若x不是列表,则报错)。

import numpy as np
arr = np.arange(10)
np.random.shuffle(arr)
print(arr)
# 输出:[2 4 0 1 8 7 3 6 5 9]

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)
print(arr)
array([[3, 4, 5],
       [6, 7, 8],
       [0, 1, 2]])

2、random.shuffle (x)

shuffle()是不能直接访问的,可以导入 random 模块,然后通过 random 静态对象调用该方法,shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值(是对列表x中的所有元素随机打乱顺序,若x不是列表,则报错)。

import random

x = [20, 16, 10, 5]
random.shuffle(x)
print ("随机排序列表 : ",  x)
随机排序列表 :  [16, 5, 10, 20]

random.shuffle直接作用于多维numpy数组并不会只打乱第一维数据,random.shuffle千万不要用于二维numpy.array(也就是矩阵)

import random
arr = np.arange(9).reshape((3, 3))
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]
random.shuffle(arr)
print(arr)
# [[0 1 2]
#  [0 1 2]
 # [6 7 8]]

参考1:https://blog.csdn.net/jasonzzj/article/details/53932645
参考2:https://blog.csdn.net/qq_21063873/article/details/80860218

你可能感兴趣的:(Python)