我发现Python(及其生态系统)充满了奇怪的约定和不一致,这是另一个例子:
np.random.rand
创建给定形状的数组,并使用来自[0,1]上的均匀分布的随机样本填充它。
np.random.random
在半开区间[0.0,1.0]中返回随机浮点数。结果来自规定区间内的“连续均匀”分布。
???究竟有什么区别?
答案 0 :(得分:15)
首先请注意,numpy.random.random
实际上是numpy.random.random_sample
的别名。我将在下面使用后者。 (有关更多别名,请参阅this question and answer。)
两个函数都从{0,1}上的uniform distribution生成样本。唯一的区别在于如何处理参数。对于numpy.random.rand
,输出数组的每个维度的长度是一个单独的参数。对于numpy.random.random_sample
,shape参数是一个单元组。
例如,要创建具有形状(3,5)的样本数组,可以编写
sample = np.random.rand(3, 5)
或
sample = np.random.random_sample((3, 5))
(真的,就是这样。)
答案 1 :(得分:0)
我也有同样的问题。这表明输出是相同的。不同之处在于输入格式(维度(元组或列表)的单个 arg 与维度 args 序列):
# np.random.random([2,3]) vs np.random.rand(2,3)
print()
np.random.seed(1)
print(' .. np.random.random([2,3]):\n', np.random.random([2,3]))
print()
np.random.seed(1)
print(' .. np.random.rand(2,3):\n', np.random.rand(2,3))
# output
.. np.random.random([2,3]):
[[4.17022005e-01 7.20324493e-01 1.14374817e-04]
[3.02332573e-01 1.46755891e-01 9.23385948e-02]]
.. np.random.rand(2,3):
[[4.17022005e-01 7.20324493e-01 1.14374817e-04]
[3.02332573e-01 1.46755891e-01 9.23385948e-02]]