Python NumPy随机数模块np.random常用函数详解
本文详细介绍Python NumPy库中np.random模块的常用函数,包括生成均匀分布、标准正态分布、整数随机数及自定义概率选择的多种方法。通过具体代码示例,解析rand、randn、randint、uniform、normal、random和choice等函数的参数用法与输出结果,帮助开发者在人工智能与数据处理中高效使用随机数生成工具。
本文主要介绍Python中NumPy库的np.random模块所包含的常用随机数生成方法。
| 名称 | 作用 |
|---|---|
| numpy.random.rand(d0, d1, …, dn) | 生成一个[d0, d1, …, dn]维的numpy数组,数组的元素取自[0, 1)上的均分布,若没有参数输入,则生成一个[0, 1)的数。 |
| numpy.random.randn(d0, d1, …, dn) | 生成一个[d0, d1, …, dn]维的numpy数组,具有标准正态分布。 |
| numpy.random.randint(low, high=None, size=None, dtype=‘I’) | 生成整数,取值范围为[low, high),若没有输入参数high,则取值区间为[0, low)。 |
| numpy.random.uniform(low=0.0, high=1.0, size=None) | 生成符合均分布的浮点数,取值范围为[low, high),默认取值范围为[0, 1.0)。 |
| numpy.random.normal(loc=0.0, scale=1.0, size=None) | 按照正态分布生成均值为loc,标准差为scale的,形状为size的浮点数。 |
| numpy.random.random(size=None) | 生成[0.0, 1.0)之间的浮点数。 |
| numpy.random.choice(a, size=None, replace=True, p=None) | 从a(数组)中选取size(维度)大小的随机数,replace=True表示可重复抽取,p是a中每个数出现的概率。若a是整数,则a代表的数组是arange(a)。 |
以下是具体的使用示例。
numpy.random.rand(d0, d1, …, dn):
该函数用于生成一个维度为[d0, d1, …, dn]的NumPy数组,数组内的元素服从[0, 1)区间上的均匀分布。如果调用时不传入任何参数,则直接生成一个位于[0, 1)区间内的单个浮点数。
import numpy as np
v1 = np.random.rand()
v2 = np.random.rand(3,4)
print(v1)
print(v2)
执行上述代码后的输出结果如下:
0.618411110932038 [[0.35134062 0.55609186 0.4173297 0.85541691] [0.35144304 0.31204156 0.60196109 0.390464 ] [0.19186067 0.94570486 0.8637441 0.07028114]]
numpy.random.randn(d0, d1, …, dn):
此函数同样生成一个维度为[d0, d1, …, dn]的NumPy数组,但数组元素服从标准正态分布(均值为0,标准差为1)。
import numpy as np
v1 = np.random.randn()
v2 = np.random.randn(3,4)
print(v1)
print(v2)
运行代码后的输出结果为:
0.47263651836701953 [[-0.23431214 0.97197099 0.52845269 -0.45246824] [-1.1266395 -1.60040653 -2.64602615 -0.19457032] [-0.520287 -1.0799122 0.08441667 0.34980224]]
numpy.random.randint(low, high=None, size=None, dtype=‘I’):
该函数用于生成整数类型的随机数,取值范围左闭右开为[low, high)。若调用时未指定high参数,则取值区间默认为[0, low)。
import numpy as np
v1 = np.random.randint(5)
v2 = np.random.randint(1,high = 5)
v3 = np.random.randint(1,high = 5,size = [3,4])
print(v1)
print(v2)
print(v3)
代码执行后的输出结果如下:
2 3 [[1 1 3 1] [2 2 3 2] [3 4 2 1]]
numpy.random.uniform(low=0.0, high=1.0, size=None):
此函数生成符合均匀分布的浮点数,取值范围为[low, high),其中默认的参数取值范围是[0, 1.0)。
import numpy as np
v1 = np.random.uniform()
v2 = np.random.uniform(low = 0,high = 5)
v3 = np.random.uniform(low = 0,high = 5,size = [3,4])
print(v1)
print(v2)
print(v3)
运行后的输出结果为:
0.6925621763952164 3.0483936610544218 [[1.34959297 4.84117424 0.41277118 4.81392216] [2.91266734 0.87922181 3.39729422 3.34340092] [0.45158364 3.8129479 0.54246798 2.57192192]]
numpy.random.normal(loc=0.0, scale=1.0, size=None)
该函数按照正态分布生成浮点数,其中loc参数指定均值,scale参数指定标准差,size参数定义输出数组的形状。
import numpy as np
v1 = np.random.normal()
v2 = np.random.normal(loc = 0,scale = 5)
v3 = np.random.normal(loc = 0,scale = 5,size = [3,4])
print(v1)
print(v2)
print(v3)
代码执行后的输出结果如下:
0.7559391954091367 -3.359831771004067 [[ 3.90821047 6.37757533 6.3813528 0.86219281] [ -3.61201084 4.05948053 -3.91172941 11.29050165] [ -8.60318633 -10.07090496 -4.86557867 7.98536182]]
numpy.random.random(size=None)
此函数用于生成位于[0.0, 1.0)区间内的浮点数。
import numpy as np
v1 = np.random.random()
v2 = np.random.random(size = [3,4])
print(v1)
print(v2)
运行代码后的输出结果为:
0.5930924941107145 [[0.41002067 0.28097163 0.8908558 0.16951515] [0.59730596 0.57475303 0.84174255 0.59633522] [0.63508879 0.44138737 0.6223043 0.61540997]]
numpy.random.choice(a, size=None, replace=True, p=None)
该函数从数组a中选取size指定维度的随机数。参数replace=True表示允许重复抽取,参数p用于指定数组a中每个元素被选中的概率。
需要注意的是,如果参数a是一个整数,则该函数将其视为arange(a)生成的数组。
import numpy as np
v1 = np.random.choice(5)
v2 = np.random.choice(5,size = 5)
v3 = np.random.choice([1,2,3,4,5],size = 5)
v4 = np.random.choice([1,2,3,4,5],size = 5,p = [1,0,0,0,0])
v5 = np.random.choice([1,2,3,4,5],size = 5,replace = False)
print("v1:",v1)
print("v2:",v2)
print("v3:",v3)
print("v4:",v4)
print("v5:",v5)
以下代码的执行输出结果如下:
v1: 1 v2: [0 0 4 0 4] v3: [3 2 3 1 1] v4: [1 1 1 1 1] v5: [4 2 3 5 1]
以上内容详细解析了Python人工智能与TensorFlow开发中np.random模块的使用方法,更多关于该模块的资料可参考本站其他相关文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









