我试图了解这些功能之间的区别(如果有的话):
numpy.random.rand()
numpy.random.random()
numpy.random.uniform()
他们似乎从均匀分布中产生随机样本。那么,在函数中没有任何参数,有什么区别吗?
答案 0 :(得分:4)
numpy.random.uniform(low=0.0, high=1.0, size=None)
- 来自任意范围的统一样本
从均匀分布中抽取样本 样本在半开区间
[low, high)
上均匀分布(包括低,但不包括高)。换句话说,给定间隔内的任何值都可以通过统一绘制。
numpy.random.random(size=None)
- 0到1之间的均匀分布
在半开区间
[0.0, 1.0)
中返回随机浮点数 结果来自所述间隔的“连续均匀”分布。要抽样Unif[a, b)
,b > a
乘以random_sample by
(b-a)的输出并添加:
(b - a) * random_sample() + a
numpy.random.rand(d0, d1, ..., dn)
- 来自均匀分布的样本以填充给定形状的数组
给定形状的随机值。
创建给定形状的数组,并使用来自[0, 1)
上的均匀分布的随机样本进行传播。
要回答您的其他问题,在给定所有默认参数的情况下,所有函数numpy.random.uniform
,numpy.random.random
和numpy.random.rand
都是相同的。
答案 1 :(得分:2)
没有参数,这三个函数是等价的,产生[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]。