NumPy random 模块随机数生成常用方法汇总
NumPy 的 random
模块提供了丰富的随机数生成函数,可以满足各种需求。它主要分为以下几个部分:
-
简单随机数生成: 生成均匀分布、正态分布等的随机数。 -
排列: 对序列进行随机排列。 -
分布: 生成各种概率分布的随机数,如二项分布、泊松分布等。 -
生成器: 用于控制随机数生成的种子。
1. 生成均匀分布的随机数
均匀分布是指在给定区间内,每个数值出现的概率相等。NumPy 提供了以下函数生成均匀分布的随机数:
-
random.rand()
:生成 [0, 1) 之间的均匀分布随机数。 -
random.random_sample()
/random.random()
/random.ranf()
/random.sample()
:功能与random.rand()
类似,都是生成 [0, 1) 之间的均匀分布随机数。 -
random.uniform()
:生成指定区间内的均匀分布随机数。
import numpy as np
# 生成一个 [0, 1) 之间的随机浮点数
random_float = np.random.rand()
print(f"一个随机浮点数:{random_float}")
# 生成一个包含 5 个 [0, 1) 之间随机浮点数的一维数组
random_array_1d = np.random.rand(5)
print(f"一维随机数组:{random_array_1d}")
# 生成一个 2x3 的二维数组,其中的元素是 [0, 1) 之间的随机浮点数
random_array_2d = np.random.rand(2, 3)
print(f"二维随机数组:\n{random_array_2d}")
# 使用 random.uniform() 生成指定区间的随机数
# 生成 10 个 [-5, 5) 之间的随机数
random_uniform = np.random.uniform(-5, 5, 10)
print(f"指定区间的随机数:{random_uniform}")
2. 生成正态分布(高斯分布)的随机数
正态分布是一种常见的概率分布,其形状呈钟形。NumPy 提供了以下函数生成正态分布的随机数:
-
random.randn()
:生成服从标准正态分布(均值为 0,标准差为 1)的随机数。 -
random.normal()
:生成指定均值和标准差的正态分布随机数。
import numpy as np
# 生成一个服从标准正态分布的随机数
random_normal = np.random.randn()
print(f"一个标准正态分布随机数:{random_normal}")
# 生成一个包含 4 个服从标准正态分布随机数的一维数组
random_normal_array = np.random.randn(4)
print(f"标准正态分布随机数组:{random_normal_array}")
# 使用 random.normal() 生成指定均值和标准差的正态分布随机数
# 生成 10 个均值为 5,标准差为 2 的正态分布随机数
random_normal_custom = np.random.normal(5, 2, 10)
print(f"自定义均值和标准差的正态分布随机数:{random_normal_custom}")
3. 生成随机整数
NumPy 提供了 random.randint()
函数生成指定范围内的随机整数。
import numpy as np
# 生成一个 [0, 10) 之间的随机整数
random_int = np.random.randint(10) # 不包含10
print(f"一个随机整数(不包含10):{random_int}")
# 生成一个 [5, 15) 之间的随机整数
random_int_range = np.random.randint(5, 15) # 不包含15
print(f"指定范围的随机整数(不包含15):{random_int_range}")
# 生成一个包含 6 个 [0, 100) 之间随机整数的一维数组
random_int_array = np.random.randint(0, 100, 6) # 不包含100
print(f"随机整数数组(不包含100):{random_int_array}")
# 生成一个 3x4 的二维数组,其中的元素是 [1, 5) 之间的随机整数
random_int_array_2d = np.random.randint(1, 5, size=(3, 4)) # 不包含5
print(f"二维随机整数数组(不包含5):\n{random_int_array_2d}")
4. 从给定数组中随机选择元素
random.choice()
函数可以从给定的数组中随机选择元素。
import numpy as np
# 从给定数组中随机选择一个元素
arr = np.array([1, 2, 3, 4, 5])
random_choice = np.random.choice(arr)
print(f"随机选择的元素:{random_choice}")
# 从给定数组中随机选择 3 个元素,允许重复选择
random_choices_with_replacement = np.random.choice(arr, size=3, replace=True)
print(f"随机选择的 3 个元素(允许重复):{random_choices_with_replacement}")
# 从给定数组中随机选择 2 个元素,不允许重复选择
random_choices_without_replacement = np.random.choice(arr, size=2, replace=False)
print(f"随机选择的 2 个元素(不允许重复):{random_choices_without_replacement}")
# 给定每个元素被选择的概率
probabilities = [0.1, 0.2, 0.3, 0.2, 0.2]
random_choice_with_probabilities = np.random.choice(arr, p=probabilities)
print(f"按概率随机选择的元素:{random_choice_with_probabilities}")
5. 设置随机数种子
使用 random.seed()
函数可以设置随机数生成器的种子。设置相同的种子可以保证每次运行程序时生成的随机数序列相同,这在需要重复实验或调试程序时非常有用。
import numpy as np
# 设置随机数种子
np.random.seed(0)
# 生成一组随机数
random_numbers_1 = np.random.rand(3)
print(f"第一组随机数:{random_numbers_1}")
# 再次设置相同的种子
np.random.seed(0)
# 生成另一组随机数,与第一组相同
random_numbers_2 = np.random.rand(3)
print(f"第二组随机数:{random_numbers_2}")
以上就是 NumPy 中常用的随机数据生成方法。
来源:Python学习杂记
THE END