Python随机数生成(二):numpy库中random函数

在Python中随机数生成主要有两种途径,一是利用random模块生成,二是利用numpy库中random函数生成。在我们日常使用中,如果是为了得到随机的单个数,多考虑random模块;如果是为了得到随机小数或者整数的矩阵,就多考虑numpy中的random函数
除此之外,scipy.stats模块也可以生成随机数和特定分布的随机数。

其他方式生成随机数见笔者的其他文章:
Python随机数生成(一):random模块

numpy库中的random函数生成随机数

NumPy 是一个 Python 库,可以对单个和多维数组和矩阵进行简单的数值计算。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。许多数据科学库(如 pandas、 scikit-learn 和 SciPy)都依赖 NumPy。

(1)生成随机整数

① np.random.randint(low, high=None, size=None, dtype=int)

功能: 返回范围在 [low, high) 中的随机整数。size参数指定数组的形状。
参数介绍:

  • low:int 型,随机数的下限
  • high:int 型,默认为空,随机数的上限,当此值为空时,函数生成[0,low)区间内的随机数
  • size:int、或ints、或元组,指明生成的随机数的类型
  • dtype:可选’int’ ,‘int32’,默认为’l’

用法:

import numpy as np
number1 = np.random.randint(low=1,high=10,size=(3,5))
number2 = np.random.randint(100) # 生成一个从0到100的随机整数
print(number1)
print(number2)

输出:
在这里插入图片描述

② random_integers(low, high=None, size=None)

功能: 返回范围在 [low, high] 中的随机整数。size参数指定数组的形状。和np.random.randint()的用法较为相似,区别在于范围不同,范围[low,high]的右边界可以取到。且该函数即将被抛弃,可以使用np.random.randint(low,high+1)进行代替
用法:

import numpy as np
number1 = np.random.random_integers(5)
number2 = np.random.random_integers(5, size=(3,2))
print(number1)
print(number2)

输出:
在这里插入图片描述

(2)生成随机浮点数

① np.random.rand(d0, d1, …, dn)

功能: 返回一个或一组满足均匀分布的随机浮点数,范围在[0, 1)之间。输入的d0,d1…dn代表维度信息。
用法:

import numpy as np
number1 = np.random.rand()
number2 = np.random.rand(3, 5)
print(number1)
print(number2)

输出:
在这里插入图片描述

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

功能: 可以生成[low,high)中的随机数,可以是单个值,也可以是一维数组,也可以是多维数组。
参数介绍:

  • low:float型,或者是数组类型的,默认为0
  • high:float型,或者是数组类型的,默认为1
  • size:int型,或元组,默认为空

用法:

import numpy as np
number1 = np.random.uniform() # 生成一个范围为[0,1)的随机数
print(number1)
number2 = np.random.uniform(1,4) # 生成一个范围为[1,4)的随机数
print(number2)
number3 = np.random.uniform(1,4,5) # 生成一维数组,数组元素取值范围为[1,4)
print(number3)
number4 = np.random.uniform(1,4,(4,3)) # 生成4x3的数组,数组元素取值范围为[1,4)
print(number4)
number5 = np.random.uniform([1,4],[5,10]) # 生成一个一维数组,数组元素取值范围分别为[1,5)和[4,10)
print(number5)

输出:
在这里插入图片描述

(3)从指定数组中生成随机数

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

功能: 基于数组a生成随机值。choice()方法允许我们指定每个值的概率。概率由介于0和1之间的数字设置,其中0表示永远不会出现该值,而1表示永远会出现该值。所有概率之和应为1。
用法:

import numpy as np
number1 = np.random.choice([3, 5, 7, 9], size=(3, 5))
number2 = np.random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(5)) # 生成包含5个值的一维数组,3, 5, 7, 9出现的概率分别为0.1, 0.3, 0.6, 0.0
print(number1)
print(number2)

输出:
在这里插入图片描述

(4)生成特定分布的随机数

1. 均匀分布

① np.random.rand(d0, d1, …, dn)

功能: 返回一个或一组满足均匀分布的随机浮点数,范围在[0, 1)之间。输入的d0,d1…dn代表维度信息。
用法见前文。

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

功能: 可以生成[low,high)中的随机数,可以是单个值,也可以是一维数组,也可以是多维数组。
用法见前文。

2. 正态分布

① np.random.randn(a,b)

功能: 生成a*b维的随机数,且该数服从标准正太分布。
用法:

import numpy as np
data = np.random.randn(3,4)
print(data)

输出:
在这里插入图片描述

参考文献

1、【Python】Numpy分布函数总结
2、Python中随机数的生成
3、numpy.random接口的官方文档
4、编程之路的学习NumPy文档

猜你喜欢

转载自blog.csdn.net/weixin_44842318/article/details/129650785