经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » NumPy » 查看文章
numpy.random模块用法总结
来源:jb51  时间:2019/5/28 8:56:16  对本文有异议

random模块用于生成随机数,下面看看模块中一些常用函数的用法:

  1. from numpy import random

numpy.random.uniform(low=0.0, high=1.0, size=None)

生出size个符合均分布的浮点数,取值范围为[low, high),默认取值范围为[0, 1.0)

  1. >>> random.uniform()
  2. 0.3999807403689315
  3. >>> random.uniform(size=1)
  4. array([0.55950578])
  5. >>> random.uniform(5, 6)
  6. 5.293682668235986
  7. >>> random.uniform(5, 6, size=(2,3))
  8. array([[5.82416021, 5.68916836, 5.89708586],
  9. [5.63843125, 5.22963754, 5.4319899 ]])

numpy.random.rand(d0, d1, ..., dn)

生成一个(d0, d1, ..., dn)维的数组,数组的元素取自[0, 1)上的均分布,若没有参数输入,则生成一个数

  1. >>> random.rand()
  2. 0.4378166124207712
  3. >>> random.rand(1)
  4. array([0.69845956])
  5. >>> random.rand(3,2)
  6. array([[0.15725424, 0.45786148],
  7. [0.63133098, 0.81789056],
  8. [0.40032941, 0.19108526]])
  9. >>> random.rand(3,2,1)
  10. array([[[0.00404447],
  11. [0.3837963 ]],
  12.  
  13. [[0.32518355],
  14. [0.82482599]],
  15.  
  16. [[0.79603205],
  17. [0.19087375]]])
  18.  

numpy.random.randint(low, high=None, size=None, dtype='I')

生成size个整数,取值区间为[low, high),若没有输入参数high则取值区间为[0, low)

  1. >>> random.randint(8)
  2. 5
  3. >>> random.randint(8, size=1)
  4. array([1])
  5. >>> random.randint(8, size=(2,2,3))
  6. array([[[4, 7, 0],
  7. [1, 4, 1]],
  8.  
  9. [[2, 2, 5],
  10. [7, 6, 4]]])
  11. >>> random.randint(8, size=(2,2,3), dtype='int64')
  12. array([[[5, 5, 6],
  13. [2, 7, 2]],
  14.  
  15. [[2, 7, 6],
  16. [4, 7, 7]]], dtype=int64)
  17.  

numpy.random.random_integers(low, high=None, size=None)

生成size个整数,取值区间为[low, high], 若没有输入参数high则取值区间为[1, low],注意这里左右都是闭区间

  1. >>> random.randint(8)
  2. >>> random.randint(8, size=1)
  3. array([1])
  4. >>> random.randint(8, size=(2,2,3))
  5. array([[[4, 7, 0],
  6. [1, 4, 1]],
  7.  
  8. [[2, 2, 5],
  9. [7, 6, 4]]])
  10. >>> random.randint(8, size=(2,2,3), dtype='int64')
  11. array([[[5, 5, 6],
  12. [2, 7, 2]],
  13.  
  14. [[2, 7, 6],
  15. [4, 7, 7]]], dtype=int64)

numpy.random.random(size=None)

产生[0.0, 1.0)之间的浮点数

  1. >>> random.random(5)
  2. array([0.94128141, 0.98725499, 0.48435957, 0.90948135, 0.40570882])
  3. >>> random.random()
  4. 0.49761416226728084

相同用法:

  • numpy.random.random_sample
  • numpy.random.ranf
  • numpy.random.sample (抽取不重复)

 numpy.random.bytes(length)

 生成随机字节

  1. >>> random.bytes(1)
  2. b'%'
  3. >>> random.bytes(2)
  4. b'\xd0\xc3'

numpy.random.choice(a, size=None, replace=True, p=None)

从a(数组)中选取size(维度)大小的随机数,replace=True表示可重复抽取,p是a中每个数出现的概率

若a是整数,则a代表的数组是arange(a)

  1. >>> random.choice(5)
  2. 3
  3. >>> random.choice([0.2, 0.4])
  4. 0.2
  5. >>> random.choice([0.2, 0.4], p=[1, 0])
  6. 0.2
  7. >>> random.choice([0.2, 0.4], p=[0, 1])
  8. 0.4
  9. >>> random.choice(5, 5)
  10. array([1, 2, 4, 2, 4])
  11. >>> random.choice(5, 5, False)
  12. array([2, 0, 1, 4, 3])
  13. >>> random.choice(100, (2, 3, 5), False)
  14. array([[[43, 81, 48, 2, 8],
  15. [33, 79, 30, 24, 83],
  16. [ 3, 82, 97, 49, 98]],
  17.  
  18. [[32, 12, 15, 0, 96],
  19. [19, 61, 6, 42, 60],
  20. [ 7, 93, 20, 18, 58]]])
  21.  

numpy.random.permutation(x)

随机打乱x中的元素。若x是整数,则打乱arange(x),若x是一个数组,则将copy(x)的第一位索引打乱,意思是先复制x,对副本进行打乱处理,打乱只针对数组的第一维

  1. >>> random.permutation(5)
  2. array([1, 2, 3, 0, 4])
  3. >>> random.permutation(5)
  4. array([1, 4, 3, 2, 0])
  5. >>> random.permutation([[1,2,3],[4,5,6]])
  6. array([[1, 2, 3],
  7. [4, 5, 6]])
  8. >>> random.permutation([[1,2,3],[4,5,6]])
  9. array([[4, 5, 6],
  10. [1, 2, 3]])
  11.  

numpy.random.shuffle(x)

与permutation类似,随机打乱x中的元素。若x是整数,则打乱arange(x). 但是shuffle会对x进行修改

  1. >>> a = arange(5)
  2. >>> a
  3. array([0, 1, 2, 3, 4])
  4. >>> random.permutation(a)
  5. array([1, 4, 3, 2, 0])
  6. >>> a
  7. array([0, 1, 2, 3, 4])
  8. >>> random.shuffle(a)
  9. >>> a
  10. array([4, 1, 3, 2, 0])
  11.  

numpy.random.seed(seed=None)

设置随机生成算法的初始值

其它符合函数分布的随机数函数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号