【发布时间】:2015-08-26 02:07:31
【问题描述】:
我试图了解这些功能之间的区别(如果有的话):
numpy.random.rand()
numpy.random.random()
numpy.random.uniform()
似乎他们从均匀分布中产生了一个随机样本。那么,函数中不带任何参数,有什么区别吗?
【问题讨论】:
我试图了解这些功能之间的区别(如果有的话):
numpy.random.rand()
numpy.random.random()
numpy.random.uniform()
似乎他们从均匀分布中产生了一个随机样本。那么,函数中不带任何参数,有什么区别吗?
【问题讨论】:
numpy.random.uniform(low=0.0, high=1.0, size=None) - 来自任意范围的统一样本
从均匀分布中抽取样本。
样本均匀分布在半开区间[low, high)(包括低点,但不包括高点)。换句话说,给定区间内的任何值都同样可能被uniform绘制。
numpy.random.random(size=None) - 0和1之间的均匀分布
返回半开区间内的随机浮点数
[0.0, 1.0)。
结果来自规定区间内的“连续均匀”分布。要对Unif[a, b)、b > a进行采样,乘以random_sample by(b-a) 的输出并添加 a:(b - a) * random_sample() + a
numpy.random.rand(d0, d1, ..., dn) - 从均匀分布中采样以填充给定形状的数组
给定形状的随机值。
创建一个给定形状的数组,并使用来自[0, 1)上的均匀分布的随机样本进行传播。
为了回答您的其他问题,给定所有默认参数,numpy.random.uniform、numpy.random.random 和 numpy.random.rand 的所有函数都是相同的。
【讨论】:
numpy.random 中的所有函数都填充数组而不是创建单个值(如果未指定形状,则它们返回单个值)。 np.random.rand 和 np.random.random 之间的主要区别在于如何指定数组的形状。 data = np.random.random([10, 10]) 而不是 data = np.random.rand(10, 10)。
没有参数,三个函数是等价的,产生一个范围为[0.0,1.0)的随机浮点数。
numpy.random.rand 是一个便捷函数,它接受任意数量的参数作为维度。它与其他 numpy.random 函数、numpy.zeros 和 numpy.ones 的不同之处还在于,所有其他函数都接受形状,即 N 元组(指定为 Python 列表或元组)。以下两行产生相同的结果(尽管有随机种子):
import numpy as np
x = np.random.random_sample((1,2,3)) # a single tuple as parameter
x = np.random.rand(1,2,3) # integers as parameters
numpy.random.random 是numpy.random.random_sample 的别名。
numpy.random.uniform 允许您使用 low 和 high 关键字参数指定分布的限制,而不是使用默认的 [0.0,1.0)。
【讨论】:
numpy.random.rand 旨在模仿 MATLAB 的 rand 函数,顺便说一句,该函数现在也接受形状作为参数。