NumPy 随机数组

NumPy 提供了强大的随机数生成功能,可以用于创建各种类型的随机数组。这些随机数组在模拟、统计、机器学习等领域都有广泛的应用。

在 NumPy 中,常用的随机数组生成函数如下表所示。

NumPy 随机数组生成函数
函数 说明
numpy.random.rand() 生成 [0, 1) 之间的均匀分布的随机数
numpy.random.randn() 生成标准正态分布(均值为 0,标准差为 1)的随机数
numpy.random.randint() 生成指定范围内的随机整数
numpy.random.random() 生成 [0.0, 1.0) 之间的随机浮点数
numpy.random.choice() 从给定的数组中随机选择元素
numpy.random.uniform() 生成指定范围的均匀分布随机数
numpy.random.normal() 生成正态分布随机数

numpy.random.rand()

在 NumPy 中,我们可以使用 numpy.random.rand() 函数来生成服从均匀分布的随机数,取值范围为 [0, 1)。

语法:

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

说明:

参数 d0, d1, ..., dn 用于指定输出数组的形状。

示例 1:numpy.random.rand() 基本用法

import numpy as np

arr = np.random.rand(3, 4) 
print(arr)

运行结果如下。

[[0.2235847  0.8605636  0.59873243 0.78467937]
 [0.50126485 0.21217406 0.19498525 0.99207028]
 [0.42074887 0.95288898 0.06596117 0.30534783]]

分析:

numpy.random.rand(3, 4) 表示生成一个 3 行 4 列的二维数组,数组中的每个元素都是 [0, 1) 之间的随机浮点数。

numpy.random.randn()

在 NumPy 中,我们可以使用 numpy.random.randn() 函数来生成标准正态分布(均值为 0,标准差为 1)的随机数。

语法:

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

说明:

参数 d0, d1, ..., dn 用于指定输出数组的形状。

示例 2:numpy.random.randn() 基本用法

import numpy as np

arr = np.random.randn(2, 2)
print(arr)

运行结果如下。

[[ 0.21328335 -1.18205563]
 [ 1.21662944 -0.34025996]]

分析:

numpy.random.randn(2, 2) 表示生成一个 2 行 2 列的二维数组,数组中的每个元素都是符合标准正态分布的随机浮点数。

numpy.random.randint()

在 NumPy 中,我们可以使用 numpy.random.randint() 函数来生成指定范围内的随机整数。

语法:

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

说明:

numpy.random.randint() 函数接收以下 4 个参数。

  • low(必选): 最小值(包含)。
  • high(可选): 最大值(不包含)。如果省略,则范围是:[0, low)。
  • size(可选,默认:None): 输出数组的形状。如果是 None,则返回一个随机数。
  • dtype(可选,默认:int): 输出数组的数据类型。

示例 3:numpy.random.randint() 基本用法

import numpy as np

arr = np.random.randint(5, size=(2, 4))
print(arr)

运行结果如下。

[[3 4 2 1]
 [3 1 3 0]]

分析:

numpy.random.randint(5, size=(2, 4)) 表示生成 2 行 4 列的数组,元素范围为 [0, 5)。如果需要指定上限,可以使用 low 和 high 这 2 个参数,比如 low = 10, high = 20 生成 10 到 19 的整数。

numpy.random.random()

在 NumPy 中,我们可以使用 numpy.random.random() 函数来生成服从均匀分布的随机浮点数,取值范围为 [0.0, 1.0)。

语法:

numpy.random.random(size=None)

说明:

numpy.random.random() 函数接收单个参数。

  • size(可选,默认:None):输出数组的形状。如果为 None,则返回一个随机数。

提示: numpy.random.random() 和 numpy.random.rand() 这 2 个函数的功能相同,但参数形式不同。

示例 4:numpy.random.random() 基本用法

import numpy as np

arr = np.random.random((2, 3))
print(arr)

运行结果如下。

[[0.99401311 0.73917034 0.65516661]
 [0.24490601 0.36247766 0.37052068]]

分析:

numpy.random.random((2, 3)) 表示用于生成一个 2 行 3 列的二维数组,数组中的每个元素都是 [0.0, 1.0) 之间的随机浮点数。

numpy.random.choice()

在 NumPy 中,我们可以使用 numpy.random.choice() 函数来从给定的数组中随机选择元素。

语法:

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

说明:

numpy.random.choice() 函数接收以下 4 个参数。

  • a(必选): 输入数组或整数。如果为整数,此时等价于:numpy.arange(a)。
  • size(可选,默认:None): 数组的形状。
  • replace(可选,默认:True): 是否允许重复选择。
  • p(可选): 每个元素被选择的概率,默认为均匀分布。

示例 5:numpy.random.choice() 基本用法

import numpy as np

arr = np.random.choice([1, 2, 3, 4, 5], size=(3,), replace=False)
print(arr)

运行结果如下。

[2 5 1]

分析:

numpy.random.choice([1, 2, 3, 4, 5], size=(3,), replace=False) 表示从数组 [1, 2, 3, 4, 5] 中随机选择了 3 个不重复的元素。

numpy.random.uniform()

在 NumPy 中,我们可以使用 numpy.random.uniform() 函数生成指定范围的均匀分布随机数。

语法:

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

说明:

numpy.random.uniform() 函数接收以下 3 个参数。

  • low(可选,默认:0.0): 最小值(包含)。
  • high(可选,默认:1.0): 最大值(不包含)。
  • size(可选,默认:None): 输出形状。

示例 6:numpy.random.uniform() 基本用法

import numpy as np

arr = np.random.uniform(-5, 5, size=(2, 2))
print(arr)

运行结果如下。

[[ 2.316781 -3.457233]
 [-1.223456  4.891234]]

分析:

numpy.random.uniform(-5, 5, size=(2,2)) 表示生成 2×2 数组,元素均匀分布在 [-5, 5) 区间。

numpy.random.normal()

在 NumPy 中,我们可以使用 numpy.random.normal() 函数生成正态分布随机数。

语法:

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

说明:

numpy.random.normal() 函数接收以下 3 个参数。

  • loc(可选,默认:0.0): 均值。
  • scale(可选,默认:1.0): 标准差(非负数)。
  • size(可选,默认:None): 输出形状。

示例 7:numpy.random.normal() 基本用法

import numpy as np

arr = np.random.normal(10, 2, size=5)
print(arr)

运行结果如下。

[12.456734  8.934562 11.023456  9.567834 10.345678]

分析:

numpy.random.normal(10, 2, size=5) 表示生成均值为 10、标准差为 2 的正态分布样本。

设置随机数种子

为了使随机数生成具有可重复性,我们可以使用 numpy.random.seed() 函数来设置一个随机数种子。然后相同的种子,会生成相同的随机数序列。

示例 8:NumPy 设置随机数种子

import numpy as np

np.random.seed(0)
arr1 = np.random.rand(2, 2)

np.random.seed(0)
arr2 = np.random.rand(2, 2)

print(np.array_equal(arr1, arr2))

运行结果如下。

True

分析:

从结果可以看出,如果使用相同的随机数种子,那么生成的随机数序列也是相同的。

上一篇: NumPy 创建数组

下一篇: NumPy 数组切片

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号