资讯专栏INFORMATION COLUMN

numpy-random函数

tomener / 699人阅读

摘要:既然是讲随机数,众所周知,计算机世界的随机数都是伪随机,都有一个叫做种子的东西可以通过输入或来使得随机的结果固定函数根据给定维度生成半开区间之间的数据,包含,不包含表示每个维度返回值为指定纬度的函数返回一个或一组样本,具有标准正态分布。

感谢scipy.org

在近期的tensorflow学习中,我发现,numpy作为python的数学运算库,学习tensorflow过程中经常需要用到,而numpy的random函数功能很多,每次用的时候都需要另行google,所以我决定将它的常用用法汇总一下。

0. first of all
import numpy as numpy

既然是讲随机数,众所周知,计算机世界的随机数都是伪随机,都有一个叫做种子(seed)的东西

numpy.random.seed(seed=None)

可以通过输入int或arrat_like来使得随机的结果固定

>>> np.random.rand(3, 3)

array([[0.43267997, 0.72368429, 0.72366367],
       [0.28496145, 0.44920635, 0.8924199 ],
       [0.31974178, 0.55658518, 0.01755763]])

>>> np.random.rand(3, 3)

array([[0.75196574, 0.33708946, 0.64345504],
       [0.85048542, 0.18109553, 0.69524277],
       [0.06390142, 0.30589554, 0.51643863]])

>>> np.random.seed(5)
>>> np.random.rand(3, 3)

array([[0.22199317, 0.87073231, 0.20671916],
       [0.91861091, 0.48841119, 0.61174386],
       [0.76590786, 0.51841799, 0.2968005 ]])

>>> np.random.seed(5)
>>> np.random.rand(3, 3)

rray([[0.22199317, 0.87073231, 0.20671916],
       [0.91861091, 0.48841119, 0.61174386],
       [0.76590786, 0.51841799, 0.2968005 ]])
1. numpy.random.rand()

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

rand函数根据给定维度生成半开区间[0,1)之间的数据,包含0,不包含1

dn表示每个维度

返回值为指定纬度的numpy.ndarray

>>> np.random.rand(3, 3) # shape: 3*3

array([[0.94340617, 0.96183216, 0.88510322],
       [0.44543261, 0.74930098, 0.73372814],
       [0.29233667, 0.3940114 , 0.7167332 ]])

>>> np.random.rand(3, 3, 3) # shape: 3*3*3

array([[[0.64794467, 0.17450186, 0.01016758],
        [0.36435826, 0.37682548, 0.19501414],
        [0.26438152, 0.28520726, 0.01617747]],

       [[0.43803165, 0.4096238 , 0.77309074],
        [0.42280405, 0.02623488, 0.82081416],
        [0.7611891 , 0.84823656, 0.64481959]],

       [[0.24420439, 0.62015463, 0.13258205],
        [0.87108689, 0.14997182, 0.43524276],
        [0.58190788, 0.32348629, 0.12158832]]])
2. np.random.randn()

numpy.random.randn(d0,d1,…,dn)

randn函数返回一个或一组样本,具有标准正态分布。

dn表示每个维度

返回值为指定维度的numpy.ndarray

>>> np.random.randn() # 当没有输入参数时,仅返回一个值

-0.7377941002942127

>>> np.random.randn(3, 3)

array([[-0.20565666,  1.23580939, -0.27814622],
       [ 0.53923344, -2.7092927 ,  1.27514363],
       [ 0.38570597, -1.90564739, -0.10438987]])

>>> np.random.randn(3, 3, 3)

array([[[ 0.64235451, -1.64327647, -1.27366899],
        [ 0.69706885,  0.75246699,  2.16235763],
        [ 1.01141338, -0.19188666,  0.07684428]],

       [[ 1.34367043, -0.76837057,  0.27803575],
        [ 0.97007349,  0.41297538, -1.65008923],
        [-3.78282033,  0.67567421, -0.0753552 ]],

       [[-0.86540385,  0.14603592,  0.29318291],
        [-0.8167798 , -0.25492782, -0.58758   ],
        [ 0.02612474,  0.17882535, -0.95483945]]])
3. numpy.random.randint()

numpy.random.randint(low, high=None, size=None, dtype=’l’)

从区间[low,high)返回随机整形

参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int

high没有填写时,默认生成随机数的范围是[0,low)

>>> np.random.randint(1, size = 10) # 返回[0, 1)之间的整数,所以只有0

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

>>> np.random.randint(1, 5) # 返回[1, 5)之间随机的一个数字

2

>>> np.random.randint(-3, 3, size=(3, 3))

array([[-1, -2, -2],
       [-3, -1, -2],
       [ 2,  2,  2]])
4. numpy.random.random_sample()

numpy.random.random_sample(size=None)

从[0.0, 1.0)的半开区间返回浮点数

>>> np.random.random_sample()

0.47108547995356098

>>> np.random.random_sample((5,))

array([ 0.30220482,  0.86820401,  0.1654503 ,  0.11659149,  0.54323428])

>>> 5 * np.random.random_sample((3, 2)) - 5

array([[-3.99149989, -0.52338984],
       [-2.99091858, -0.79479508],
       [-1.23204345, -1.75224494]])

类似功能的还有:
numpy.random.random(size=None)
numpy.random.ranf(size=None)
numpy.random.sample(size=None)

5. numpy.random.choice() ✡️

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

从给定的一位数组中生成一个随机样本

a要求输入一维数组类似数据或者是一个int;size是生成的数组纬度,要求数字或元组;replace为布尔型,决定样本是否有替换;p为样本出现概率

>>> np.random.choice(5, 3) # 这个等同于np.random.randint(0,5,3)

array([0, 3, 4])

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])

array([3, 3, 0])

>>> np.random.choice(5, 3, replace=False)

array([3,1,0])

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])

array([2, 3, 0])

>>> aa_milne_arr = ["pooh", "rabbit", "piglet", "Christopher"]
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])

array(["pooh", "pooh", "pooh", "Christopher", "piglet"],
      dtype="|S11")

感谢您的阅读

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42278.html

相关文章

  • JavaScript面向对象编程——Function类型

    摘要:在中,函数也是以对象的形式存在的。也可以使用对象作为参数返回值调用该函数的返回结果。调用自身的函数被称之为递归函数。默认名字的函数被称之为匿名函数。内部函数在函数中声明内嵌函数,内嵌函数对函数中的局部变量进行访问。 Function类型 Function与函数 函数它只定义一次,但可能被执行或调用多次 。Function类型是JavaScript提供的引用类型之一,通过Function...

    Object 评论0 收藏0
  • JavaScript...Function类型...

    摘要:类型与函数函数是这样一段代码它只定义一次但可能被执行或调用多次类型是提供的引用类型之一通过类型创建对象在中函数也是以对象的形式存在的每个函数都是一个对象函数名本质就是一个变量名是指向某个对象的引用函数声明方式字面量方式判断函数是否为类型的中 Function类型 Function与函数 函数是这样一段JavaScript代码 它只定义一次 但可能被执行或调用多次Function类型是J...

    Eirunye 评论0 收藏0
  • js函数探索

    摘要:关于构造函数有几点需要特别注意构造函数允许在运行时动态的创建并编译函数。而函数本身的表示该函数的形参。每一个函数都包含不同的原型对象,当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性。 该文章以收录: 《JavaScript深入探索之路》 前言 函数是这样的一段JavaScript代码,它只定义一次,但是可能被执行或调用任意次。你可能已经从诸如子例程或者过程这些名字里...

    thursday 评论0 收藏0
  • 论普通函数和箭头函数的区别以及箭头函数的注意事项、不适用场景

    摘要:第二种情况是箭头函数的如果指向普通函数它的继承于该普通函数。箭头函数的指向全局,使用会报未声明的错误。 showImg(https://segmentfault.com/img/remote/1460000018610072?w=600&h=400); 箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API...

    paulquei 评论0 收藏0
  • JavaScript 之 面向对象 [ Function类型 ]

    摘要:类型描述在中的所有函数都是类型的对象定义函数的方式函数声明方式函数名函数体函数声明方式定义函数函数声明方式显示函数声明方式字面量方式函数名函数体字面量方式定义函数字面量方式显示字面量方式构造函数方式函数名参数,函数体函数的参数和函数体,都以 Function类型 描述 在JavaScript中的所有函数都是Function类型的对象 定义函数的方式 函数声明方式 function 函数...

    AprilJ 评论0 收藏0

发表评论

0条评论

tomener

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<