numpy中的random的使用

rand

  • rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
  • 括号参数为生成随机数的维度

import numpy as np
np.random.rand(4, 2)
Out[66]:
array([[0.84397828, 0.39929488],
[0.66913164, 0.33996681],
[0.70253518, 0.36046703],
[0.21090572, 0.79527155]])

randn

根据给定的形状,从均值为0,方差为1的高斯分布中随机采样浮点型数据,作为返回结果,若没有给定参数,则只随机采样一个数据返回。

np.random.randn()
Out[67]: 0.15348353234002365
np.random.randn(2, 4)
Out[68]:
array([[-0.0788733 , 0.58486124, -0.85670253, 1.21949825],
[-0.25676356, -1.11947588, 0.69715979, -0.38886418]])

若要随机生成以μ为均值,σ²为方差的高斯分布数据,则可以使用:
σ * np.random.randn(…) + μ

>>> 3 + 2.5 * np.random.randn(2, 4)
array([[-4.49401501, 4.00950034, -1.81814867, 7.29718677],
[ 0.39924804, 4.68456316, 4.99394529, 4.84057254]])

randint

根据给定的形状,随机生成 [low, high) 之间的整数,若没有给定high参数,则随机生成 [0, low) 之间的整数,若size没有给定,则只返回一个整数。

>>> np.random.randint(6)
5

>>> np.random.randint(2, 6, (3,4))
array([[3, 2, 3, 2],
[3, 3, 5, 5],
[4, 4, 4, 4]])

choice

从给定的数据中选取给定形状的数据。
原型:np.random.choice(a, size=None, replace=True, p=None)

>>> np.random.choice(5,3)
array([2, 0, 2])
>>> np.random.choice(5,4)
array([4, 2, 0, 2])

>>> np.random.choice([2,5,6,3,8],size=[2,2])
array([[5, 8],
[5, 2]])

replace : boolean, optional
replace=True时表示有放回的取数,replace=False时表示无放回的取数,通俗的讲就是为True时一个元素可以多次选取,为False时每个元素只能选取一次。默认为True

# 当size大小(6)不大于a的大小(6)时,正常:
>>> np.random.choice([1,2,3,4,5,6], size=[2,3], replace=False)
array([[5, 2, 6],
[4, 1, 3]])
# 当size大小(9)大于a的大小(6)时,报错:
>>> np.random.choice([1,2,3,4,5,6], size=[3,3], replace=False)
Traceback (most recent call last):
File “”, line 1, in
File “mtrand.pyx”, line 1168, in mtrand.RandomState.choice
ValueError: Cannot take a larger sample than population when ‘replace=False’

shuffle

将给定的数据进行随机排序,使数据无序;若为多维数组,则只对第一维进行洗牌,其余维不变。

>>> # 对于一维数组或者列表
>>> a = [1,2,3,4,5]
>>> np.random.shuffle(a)
>>> a
[5, 3, 1, 2, 4]
>>> # 对于二维数组
>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> np.random.shuffle(a)
>>> a
[[1, 2, 3], [7, 8, 9], [4, 5, 6]]

random

根据给定的形状,随机生成 [0.0, 1.0) 之间的浮点型数据。

原型:np.random.random(size=None, dtype=‘d’, out=None)

>>> np.random.random()
0.5375354013215928
>>> np.random.random(size=(2,3))
array([[0.64866742, 0.67112336, 0.94198564],
[0.94086871, 0.28827241, 0.73878114]])

uniform

原型:np.random.uniform(low=0.0, high=1.0, size=None)
参数:
low : float or array_like of floats, optional
输出数据的下限值,默认为0.0
high : float or array_like of floats
输出数据的上限值,默认为1.0
size : int or tuple of ints, optional
输出数据的形状。若为指定,则只输出一个数据;若size没有指定,而low或hige指定为非常量(比如列表),则返回np.broadcast(low, high).size形状的数据,如low=1,high=[2,3,4,5],则返回[1,4]形状的数据

未指定任何参数,默认返回[0.0, 1.0)之间的一个数据:

>>> np.random.uniform()
0.5158813519405029v

指定输出数据的形状为2行3列:

>>> np.random.uniform(size=[2,3])
array([[0.22826952, 0.3800571 , 0.42333292],
[0.39361266, 0.42119074, 0.96617646]])

未指定size时,指定high为一个非常量,输出数据的形状由low和hige的形状而定:

# 指定hige为一个非常量
>>> np.random.uniform(low=0, high=[1,2,3,4])
array([0.77303588, 1.48993969, 1.19249964, 1.51544523])
# 指定一个非一维的非常量high
>>> np.random.uniform(high=[[2,4],[6,8]])
array([[1.73997403, 0.74716176],
[3.87522426, 7.9060629 ]])
# 指定low为一个非常量
>>> np.random.uniform(low=[0,1,2,3], high=9)
array([2.14857954, 4.35577815, 5.43381644, 4.37369653])
# 同时指定low和high为非常量,此时low和high的形状必须相同
>>> np.random.uniform(low=[1,3,5,7], high=[2,4,6,8])
array([1.9812424 , 3.51672234, 5.63879449, 7.2477922 ])
# 同时指定low和hige为非常量,且都不是一维的
>>> np.random.uniform(low=[[1,3],[5,7]], high=[[2,4],[6,8]])
array([[1.26686063, 3.99613498],
[5.16915922, 7.32881325]])
注:若同时指定low和high为非常量,则low和hige的形状必须一致,否则报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值