• 3.np.random


    1. np.random.seed

    np.random.seed()函数用于生成指定随机数
    seed()被设置了之后,np.random.random()可以按顺序产生一组固定的数组,如果使用相同的seed()值,则每次生成的随机数都相同。
    如果不设置这个值,那么每次生成的随机数不同。只在调用的时候seed()一次,不能使生成的随机数相同,需要每次调用都seed()一下,表示种子相同,从而生成的随机数相同。

    #只在调用的时候seed()一次,生成不同的随机数
    np.random.seed(1)
    List1 = np.random.randn(4,4)
    List2 = np.random.randn(4,4)
    # List1 != List2
    
    #每次调用都seed()同一个值
    np.random.seed(1)
    List3 = np.random.randn(4,4)
    np.random.seed(1)
    List4 = np.random.randn(4,4)
    # List1 == List2
    
    print("List1:",List1)
    print("List2:",List2)
    print("List3:",List3)
    print("List4:",List4)
    
    # 输出:
    List1: [[ 1.62434536 -0.61175641 -0.52817175 -1.07296862]
     [ 0.86540763 -2.3015387   1.74481176 -0.7612069 ]
     [ 0.3190391  -0.24937038  1.46210794 -2.06014071]
     [-0.3224172  -0.38405435  1.13376944 -1.09989127]]
    List2: [[-0.17242821 -0.87785842  0.04221375  0.58281521]
     [-1.10061918  1.14472371  0.90159072  0.50249434]
     [ 0.90085595 -0.68372786 -0.12289023 -0.93576943]
     [-0.26788808  0.53035547 -0.69166075 -0.39675353]]
    List3: [[ 1.62434536 -0.61175641 -0.52817175 -1.07296862]
     [ 0.86540763 -2.3015387   1.74481176 -0.7612069 ]
     [ 0.3190391  -0.24937038  1.46210794 -2.06014071]
     [-0.3224172  -0.38405435  1.13376944 -1.09989127]]
    List4: [[ 1.62434536 -0.61175641 -0.52817175 -1.07296862]
     [ 0.86540763 -2.3015387   1.74481176 -0.7612069 ]
     [ 0.3190391  -0.24937038  1.46210794 -2.06014071]
     [-0.3224172  -0.38405435  1.13376944 -1.09989127]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    2. np.random.choice

    2.1 产生随机数

    #numpy.random.choice(a, size=None, replace=True, p=None)
    
    #从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组
    # a为一维数组或int,如果是int,则生成随机样本,就好像a是np.arange(N)一样。
    
    #replace:True表示可以取相同数字,False表示不可以取相同数字。代表的意思是抽样之后还放不放回去
    
    #数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    除了numpy中的数组,python内建的list(列表)、tuple(元组)也可以使用。

    print(np.random.choice(5)) #从[0, 5)中随机输出一个随机数
    #相当于np.random.randint(0, 5)
    	
    
    print(np.random.choice(5, 3))#在[0, 5)内输出五个数字并组成一维数组(ndarray)
    #相当于np.random.randint(0, 5, 3)
    
    #输出
    1
    [0 4 1]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.2 从数组、列表或元组中随机抽取

    注意:不管是什么,它必须是一维的!

    L = [1, 2, 3, 4, 5]#list列表
    T = (2, 4, 6, 2)#tuple元组
    A = np.array([4, 2, 1])#numpy,array数组,必须是一维的
    A0 = np.arange(10).reshape(2, 5)#二维数组会报错
    
    array = np.random.choice(L, 5)
    print(array)
    	
    array = np.random.choice(T, 5)
    print(array)
     
    array = np.random.choice(A, 5)
    print(array)
    array = np.random.choice(A0, 5)#如果是二维数组,会报错
    
    #输出
    [1 1 4 3 2]
    [2 6 2 2 6]
    [2 2 2 4 4]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    np.random.choice参数的 a 必须是一维的
    在这里插入图片描述

    • 参数replace
      用来设置是否可以取相同元素:
      True表示可以取相同数字;
      False表示不可以取相同数字。
      默认是True
    print(np.random.choice(5, 6, replace=True))#可以看到有相同元素
    
    print(np.random.choice(5, 6, replace=False))#会报错,因为五个数字中取六个,不可能不取到重复的数#输出
    [1 3 4 2 4 0]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    • 参数p
      p实际是个数组,大小(size)应该与指定的a相同,用来规定选取a中每个元素的概率,默认为概率相同。p数组的 概率和 = 1
    aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
    print(np.random.choice(aa_milne_arr, 10, p=[0.6, 0.1, 0.1, 0.2]))
    #可以看到,‘pooh’被选取的概率明显比其他几个高很多
    ['pooh' 'piglet' 'Christopher' 'piglet' 'pooh' 'piglet' 'pooh' 'pooh' 'Christopher' 'pooh']
    
    • 1
    • 2
    • 3
    • 4
    • 参数 size
      size = 一个整数。一维数组
      size = 2个整数。二维数组
    split_traces_indexes = np.random.choice(np.arange(20),size=(4, 5),replace=False)
    print(split_traces_indexes)
    
    #输出
    [[13 17  1 16 18]
     [15 14 19  3 11]
     [ 9 12  7 10  2]
     [ 0  8  6  5  4]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.综合例子

    trace_files = [1,2,3,4,5,6,7,8,9,10,11,12]
    split_traces_indexes = np.random.choice(np.arange(len(trace_files)),size=(3, 4),replace=False)
    trace_file_change = np.array(trace_files)[split_traces_indexes]
    
    print(split_traces_indexes)
    print(trace_file_change)
    
    #输出
    [[10  9  1 11]
     [ 7  2  5  4]
     [ 6  8  0  3]]
     
    [[11 10  2 12]
     [ 8  3  6  5]
     [ 7  9  1  4]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    Git忽略文件.gitignore的使用
    AWS SAP-C02教程8-大数据和机器学习
    windows系统中用windbg收集程序崩溃信息
    java计算机毕业设计ssm宠物店管理系统element vue前后端分离
    初识设计模式 - 单例模式
    C# 常用功能整合-1
    机器学习中的基础问题总结
    【深度学习】优化算法浅记
    java基于springboot酒店客房预定管理系统ssm
    上传到服务器的图片资源如何读取
  • 原文地址:https://blog.csdn.net/u014217137/article/details/127937382