• 转---Python——numpy random类


    numpy中利用random类获取随机数.
    
    numpy.random.random() 生成随机浮点数
    默认为生成一个随机的浮点数,范围是在0.0~1.0之间,也可以通过参数size设置返回数据的size;
    
    生成一个随机的浮点数:
    
    import numpy
    n = numpy.random.random()
    print n
    1
    2
    3
    输出:
    
    0.429489486421
    1
    设置参数size:
    
    import numpy
    n = numpy.random.random(size=(3, 2))
    print n
    1
    2
    3
    输出:
    
    [[ 0.32018625  0.22410508]
     [ 0.57830333  0.74477335]
     [ 0.08333105  0.48533304]]
    1
    2
    3
    numpy.random.randint() 产生随机整数
    API: randint(low, high=None, size=None, dtype=’l’) 
    numpy.random.randint()随机生一个整数int类型,可以指定这个整数的范围
    
    import numpy as np
    print np.random.randint(8)
    print np.random.randint(5, size=3)
    print np.random.randint(6, size=(3,2))
    1
    2
    3
    4
    输出:
    
    4
    [1 1 3]
    [[2 4]
     [5 4]
     [3 0]]
    1
    2
    3
    4
    5
    指定范围:
    
    import numpy as np
    print np.random.randint(low=5, high=10, size=3)
    1
    2
    输出:
    
    [7 5 5]
    1
    numpy.random.normal()  高斯分布随机数
    API: normal(loc=0.0, scale=1.0, size=None) 
    loc:均值,scale:标准差,size:抽取样本的size
    
    import numpy
    n = numpy.random.normal(loc=0.0, scale=1, size=(2, 3))
    print n
    1
    2
    3
    输出:
    
    [[-0.15040995 -0.43780718 -0.22292445]
     [-0.89388124 -0.39465164  0.24113838]]
    1
    2
    numpy.random.randn() 标准正态分布随机数
    numpy.random.randn(d0, d1, …, dn)函数: 
    从标准正态分布中返回一个(d0*d1* …* dn)维样本值
    
    例1:
    
    import numpy as np
    print np.random.randn(4, 2)
    1
    2
    输出:
    
    [[-1.88753851 -2.54412195]
     [ 0.51856343 -1.07733711]
     [ 1.05820592 -0.23889217]
     [ 0.73309062  0.42152066]]
    1
    2
    3
    4
    例2:
    
    import numpy as np
    print np.random.randn(4, 2, 3)
    1
    2
    输出:
    
    [[[-1.00477835  1.16919912 -1.28299362]
      [ 0.0645336   0.19143397 -0.16957401]]
    
     [[-1.45250491 -0.51844037 -0.01241654]
      [ 0.41427599  0.19469926 -0.92450654]]
    
     [[-1.90133606  1.23554382 -1.37775698]
      [-0.98110245  0.3562373  -0.27816068]]
    
     [[ 1.0380202   0.24293181  0.5341542 ]
      [-0.62945999  1.62233629 -0.07299065]]]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    numpy.random.rand() 生成[0, 1)间随机数
    numpy.random.rand(d0, d1, …, dn)函数: 
    生成一个(d0*d1* …* dn)维位于[0, 1)中随机样本
    
    例:
    
    import numpy as np
    print np.random.rand(2,3)
    1
    2
    输出:
    
    [[ 0.06112299  0.02476706  0.04235452]
     [ 0.47891264  0.68831817  0.31309659]]
    1
    2
    numpy.random.shuffle() 随机打乱序列
    numpy.random.shuffle() 将序列的所有元素随机排序 
    <传入参数可以是一个序列或者元组>
    
    import numpy as np
    x = range(0, 8, 1)
    print x
    np.random.shuffle(x)
    print x
    1
    2
    3
    4
    5
    输出:
    
    [0, 1, 2, 3, 4, 5, 6, 7]
    
    [2, 3, 5, 4, 1, 7, 0, 6]
    1
    2
    3
    numpy.random.choice() 随机选取序列的一个元素
    numpy.random.choice()可以从序列(字符串、列表、元组等)中随机选取,返回一个列表,元组或字符串的随机项。
    
    import numpy as np
    print np.random.choice(['a','b','c','d','e'])
    1
    2
    输出:
    
    c
    1
    print np.random.choice(5, 6)
    1
    输出(6个小于5的元素):
    
    [2 3 3 3 1 2]
    1
    p:每个条目出现的概率。如果没有,假设样本在A中的所有条目都具有均匀分布。
    
    import numpy as np
    print np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
    1
    2
    (p=[0.1, 0, 0.3, 0.6, 0]即出现0 1 2 3 4的概率分别是[0.1, 0, 0.3, 0.6, 0])
    
    输出:
    
    [0 3 2]
    1
    import numpy as np
    ss = ['pooh', 'rabbit', 'piglet', 'Christopher']
    print np.random.choice(ss, 5, p=[0.5, 0.1, 0.1, 0.3])
    1
    2
    3
    输出:
    
    ['Christopher' 'piglet' 'pooh' 'piglet' 'Christopher']
    1
    numpy.random.binomial() 二项分布采样
    numpy.random.RandomState.binomial(n, p, size=None)表示对一个二项分布进行采样,s为成功次数 
     P(N)=CsnPs(1−P)n−s
    size:采样的次数,n p即式中的n p;函数的返回值表示n中发生/成功的次数s. 
    如:当n=5,p=0.2,size=1000,即5个事件每个发生的概率为0.2,则5个同时发生的概率,采样size=1000次:
    
     P(p=0.2)=C55p5(1−p)0=0.32
    import numpy as np
    print sum(np.random.binomial(5, 0.2, size=10000)==0)/10000.
    1
    2
    可得:
    
    0.3246
    1
    很接近手动计算结果.
    
    numpy.random.RandomState() 指定种子值
    numpy.random.RandomState()指定种子值(指定种子值是为了使同样的条件下每次产生的随机数一样,避免程序调试时由随机数不同而引起的问题) 
    如不设置种子值时,np.random.randint(8)可能产生0-7内的任意整数,且每次产生的数字可能是任意一种. 
    而设置种子值后,np.random.RandomState(0).randint(8)可能产生0-7内的任意整数,但种子值不变时每次运行程序产生的数字一样.
    
    产生随机整数:
    
    import numpy as np
    print np.random.RandomState(0).randint(8)
    1
    2
    输出:
    
    4
    1
    生成随机浮点数:
    
    import numpy
    n1 = numpy.random.RandomState(0).random_sample()
    n2 = numpy.random.RandomState(0).random_sample(size=(2,3))
    print n1,n2
    1
    2
    3
    4
    输出:
    
    0.548813503927 
    [[ 0.5488135   0.71518937  0.60276338]
     [ 0.54488318  0.4236548   0.64589411]]
    
    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    Range
    cache
    从头到尾彻底解析Hash 表算法
    教你如何迅速秒杀掉:99%的海量数据处理面试题
    秒杀抢购思路以及高并发下数据安全
    Nginx+Tomcat负载均衡
    强大的Spring缓存技术(上)
    强大的Spring缓存技术(中)
    强大的Spring缓存技术(下)
    (转)C#中的 break 与continue 的使用和注意
  • 原文地址:https://www.cnblogs.com/Frank99/p/9552471.html
Copyright © 2020-2023  润新知