NumPy库学习之np.random.choice函数
一、简介
np.random.choice
是 NumPy 库中的一个函数,用于从给定的数组或范围内随机选择元素。这个函数提供了灵活的参数设置,包括是否允许重复选择、选择的概率分布等。
二、语法和参数
函数的基本语法如下:
numpy.random.choice(a, size=None, replace=True, p=None)
参数说明:
a
:一个数组或范围,表示可以选择的元素集合。size
:整数或整数的序列,表示要随机选择的元素数量。默认为None
,即从a
中选择一个元素。replace
:布尔值,表示是否允许重复选择元素。如果为True
(默认值),则允许重复;如果为False
,则不允许重复,且size
不应超过a
的长度。p
:一个数组,表示每个元素被选择的概率。如果提供了p
,则a
中的每个元素将根据p
中对应元素的概率被选择。p
中的值必须非负且总和为1或总和大于0但小于1(表示0的概率)。
三、实例
3.1 从数组中随机选择一个元素
import numpy as np
# 从数组中随机选择一个元素
element = np.random.choice(['apple', 'banana', 'cherry'])
print("选择的元素:", element)
输出:
选择的元素: apple # 这个值是随机的,可能是 'apple', 'banana', 或 'cherry'
3.2 从数组中随机选择多个元素
# 从数组中随机选择3个元素,允许重复
elements = np.random.choice(['apple', 'banana', 'cherry'], size=3, replace=True)
print("选择的元素:", elements)
输出:
选择的元素: ['banana' 'cherry' 'banana'] # 这些值是随机的
3.3 从数组中随机选择元素,不允许重复
# 从数组中随机选择2个不同的元素
elements_unique = np.random.choice(['apple', 'banana', 'cherry'], size=2, replace=False)
print("选择的不重复元素:", elements_unique)
输出:
选择的不重复元素: ['banana' 'cherry'] # 这些值是随机的,且不会重复
3.4 根据概率分布从数组中随机选择元素
# 根据概率分布从数组中随机选择一个元素
probabilities = [0.1, 0.1, 0.8] # 'cherry' 的选择概率更高
element_by_prob = np.random.choice(['apple', 'banana', 'cherry'], p=probabilities)
print("根据概率选择的元素:", element_by_prob)
输出:
根据概率选择的元素: cherry # 'cherry' 的选择概率是0.8
四、注意事项
- 当
replace=False
时,a
中的元素数量必须至少与size
相等,否则会抛出异常。 - 如果提供了
p
参数,p
的长度必须与a
的长度相同,且所有值必须非负。 np.random.choice
函数在随机选择时考虑了a
中元素的权重,如果未指定p
,则每个元素被选择的概率是相等的。- 与
np.random.rand
类似,np.random.choice
也是伪随机数生成函数,可以通过np.random.seed()
设置种子以获得可重复的结果。