06_Numpy各种随机数组的生成方法

06_Numpy各种随机数组的生成方法

numpy.random模块中,有很多可以生成随机数的函数。

在此,对以下的内容进行说明:

  • 生成均匀分布的随机数。
    • numpy.random.rand(): 0.0到1.0
    • numpy.random.random_sample(): 0.0到1.0
    • numpy.random.randint():任意值范围的整数
  • 生成正态分布的随机数。
    • numpy.random.randn(): 平均为0,标准差为1
    • numpy.random.normal(): 任意值的平均和标准差
  • 生成二项式的随机数。
    • numpy.random.binomial()
  • 生成Beta分布的随机数。
    • numpy.random.beta()
  • 生成Gamma分布的随机数。
    • numpy.random.gamma()
  • 生成卡方分布的随机数。
    • numpy.random.chisquare()

以上内容,使用代码进行说明。

生成均匀分布的随机数。

numpy.random.rand(): 均匀分布 0.0到1.0


numpy.random.rand()返回一组0.0到1.0之间的随机数。

import numpy as np

rand = np.random.rand()  # 1个随机数
print(rand)
# 0.5399711080561779

arr = np.random.rand(3)  # 长度为3的随机数数组
print(arr)
# [ 0.22393312  0.56723404  0.41167989]

arr = np.random.rand(4, 4)  # 4 x 4的随机数数组
print(arr)
# [[ 0.98109413  0.43272792  0.78808567  0.14697466]
#  [ 0.14529422  0.66417579  0.62020433  0.39887021]
#  [ 0.78762131  0.3616854   0.76995665  0.25530529]
#  [ 0.59426681  0.64130992  0.41451061  0.2356074 ]]

arr = np.random.rand(3, 2, 2)  # 3 x 2 x 2的随机数数组
print(arr)
# [[[ 0.26072665  0.63424568]
#   [ 0.43025675  0.88787556]]
#
#  [[ 0.58189813  0.57733422]
#   [ 0.4312518   0.12558879]]
#
#  [[ 0.58588003  0.58290714]
#   [ 0.58133023  0.05894161]]]

numpy.random.random_sample(): 均匀分布 0.0到1.0


numpy.random.random_sample()和np.random.rand()相同,返回一组0.0到1.0之间的随机数。不同的是指定参数的类型。
numpy.random.random_sample()的参数类型为tuple(元组)。

rand = np.random.random_sample()  # 1个随机数
print(rand)
# 0.7812294650415362

arr = np.random.random_sample(3)  # 长度为3的随机数数组
print(arr)
# [ 0.31315625  0.75406842  0.51955327]

arr = np.random.random_sample((4, 4))  # 4 x 4的随机数数组
print(arr)
# [[ 0.17710988  0.63316992  0.00101942  0.94233375]
#  [ 0.9439738   0.58700846  0.97807038  0.56899597]
#  [ 0.62050185  0.23601975  0.57513176  0.56947325]
#  [ 0.64393715  0.92796497  0.83784537  0.1544701 ]]

arr = np.random.random_sample((3, 2, 2))  # 3 x 2 x 2的随机数数组
print(arr)
# [[[ 0.26624554  0.33096779]
#   [ 0.1814989   0.12867246]]
#
#  [[ 0.1435755   0.45274324]
#   [ 0.12867198  0.98908694]]
#
#  [[ 0.86989893  0.67003622]
#   [ 0.17530006  0.03146698]]]

print(np.random.random_sample is np.random.random)
# True

其他:

  • np.random.random()
  • np.random.ranf()
  • np.random.sample()

上述函数的函数名虽然不同,但功能完全相同。

numpy.random.randint(): 均匀分布 任意值范围的整数


np.random.randint()返回一组任意值范围的整数随机数。
参数的指定顺序为最小值,最大值,尺寸,类型。

arr = np.random.randint(4, 10, (3, 3))  # 4到10的3 x 3的随机整数数组
print(arr)
# [[9 5 6]
#  [4 8 9]
#  [9 8 5]]

numpy.random.randn(): 正态分布 平均为0,标准差为1


np.random.randn()返回一组平均为0,标准差为1,服从正态分布的随机数。

arr = np.random.randn(3, 3)
print(arr)
# [[-0.25630308  0.86118703  0.7163906 ]
#  [-0.63096426 -2.09983061  1.28259567]
#  [ 1.45971205  0.2939326   0.64207751]]

numpy.random.normal(): 正态分布 任意值的平均和标准差


numpy.random.normal()返回一组平均为loc,标准差为scale,服从正态分布的随机数。

numpy.random.normal(loc=0.0, scale=1.0, size=None)

参数size的类型为tuple(元组)

arr = np.random.normal(-2, 0.5, (3, 3))
print(arr)
# [[-2.40461812 -2.76365861 -1.70312821]
#  [-2.29453302 -1.53210319 -1.49669024]
#  [-1.90580765 -1.45375908 -2.44137036]]

numpy.random.binomial(): 二项分布


numpy.random.binomial()返回一组服从参数n,p的二项式随机数。

参数size的类型为tuple(元组)

arr = np.random.binomial(10, 0.5, 10)
print(arr)
# [7 4 7 5 7 8 5 5 3 4]

numpy.random.beta(): Beta分布


numpy.random.beta()返回一组服从参数a,b的Beta分布的随机数。

参数size的类型为tuple(元组)

arr = np.random.beta(2, 2, 10)
print(arr)
# [ 0.36516508  0.86746749  0.54430968  0.31152791  0.57359928  0.48281988
#   0.70518635  0.57312808  0.09019818  0.87831173]

numpy.random.gamma(): Gamma分布


numpy.random.gamma()返回一组服从参数shape,比例scale的Gamma分布的随机数。

参数size的类型为tuple(元组)

arr = np.random.gamma(5, 1, 10)
print(arr)
# [ 3.86630062  1.69144819  3.07071675  3.14181626  3.61405871  8.37772201
#   5.47063142  4.80523142  3.68531649  4.43143731]

numpy.random.chisquare(): 卡方分布


numpy.random.chisquare()返回一组服从自由度df的卡方分布的随机数。

参数size的类型为tuple(元组)

arr = np.random.chisquare(3, 10)
print(arr)
# [ 0.49617849  2.39966829  2.84359974  3.5340327   0.71761612  2.04619564
#   0.35930769  4.00448281  1.2907048   2.99259386]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值