深入了解 NumPy 的 `numpy.random.choice` 函数

零 Python教程评论83字数 1755阅读5分51秒阅读模式

深入了解 NumPy 的 `numpy.random.choice` 函数

深入了解 NumPy 的 numpy.random.choice 函数

在数据科学、统计学和机器学习等领域中,随机数生成是一个非常重要的任务。而 NumPy 提供了许多强大的工具来生成随机数,其中一个非常有用的函数就是 numpy.random.choice。本文将详细介绍这个函数的用法及其参数。

函数简介

numpy.random.choice 函数用于从给定的 1 维数组中生成一个随机样本,它提供了一种灵活且高效的方式来进行随机采样。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/16290.html

函数签名

css

复制代码
numpy.random.choice(a, size=None, replace=True, p=None)

参数详解

  • a: 1-D array-like or int
    如果是 ndarray,则从其元素中生成随机样本。如果是 int,则随机样本将从 np.arange(a) 中生成。
  • size: int or tuple of ints, optional
    输出样本的形状。如果给定形状,例如 (m, n, k),则会抽取 m * n * k 个样本。默认值为 None,此时返回单个值。
  • replace: boolean, optional
    样本是否有放回地抽取。默认值为 True,意味着可以多次选择同一值。
  • p: 1-D array-like, optional
    与 a 中每个条目相关联的概率。如果未给定,则样本假设在 a 的所有条目上均匀分布。

返回值

  • samples: single item or ndarray
    生成的随机样本。

异常

  • ValueError:
    如果 a 是 int 并且小于零,如果 a 或 p 不是 1 维的,如果 a 是大小为 0 的 array-like,如果 p 不是概率向量,如果 a 和 p 长度不同,或者如果 replace=False 并且样本大小大于总体大小,则会抛出此异常。

注意事项

  • 在新代码中应使用 random.Generator.choice 方法。
  • 用户指定概率(通过 p 参数)使用的采样器更为通用但效率较低。
  • 通过轴关键字,Generator.choice 方法可以从二维数组中随机抽取行,这在 numpy.random.choice 中是不可能的。

使用示例

下面是一些使用 numpy.random.choice 的示例,以帮助您理解如何应用这个函数:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/16290.html

示例 1:生成一个从 np.arange(5) 中的大小为 3 的均匀随机样本

python

复制代码
import numpy as np
np.random.choice(5, 3)
# 输出示例: array([0, 3, 4])

这等价于 np.random.randint(0, 5, 3)文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/16290.html

示例 2:生成一个从 np.arange(5) 中的大小为 3 的非均匀随机样本

css

复制代码
np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
# 输出示例: array([3, 3, 0])

示例 3:生成一个从 np.arange(5) 中的大小为 3 的无放回均匀随机样本

ini

复制代码
np.random.choice(5, 3, replace=False)
# 输出示例: array([3, 1, 0])

这等价于 np.random.permutation(np.arange(5))[:3]文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/16290.html

示例 4:生成一个从 np.arange(5) 中的大小为 3 的无放回非均匀随机样本

ini

复制代码
np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
# 输出示例: array([2, 3, 0])

示例 5:从任意 array-like 对象中生成样本

css

复制代码
aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
# 输出示例: array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'], dtype='<U11')

总结

numpy.random.choice 是一个非常强大的工具,它允许从数组中灵活地抽取随机样本。无论是均匀分布还是非均匀分布,有放回还是无放回,该函数都可以很好地处理。尽管如此,在新代码中建议使用 random.Generator.choice 方法,以获得更高的性能和更多的功能。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/16290.html 文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/16290.html

零
  • 转载请务必保留本文链接:https://www.0s52.com/bcjc/pythonjc/16290.html
    本社区资源仅供用于学习和交流,请勿用于商业用途
    未经允许不得进行转载/复制/分享

发表评论