首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >np.random.rand对np.random.random

np.random.rand对np.random.random
EN

Stack Overflow用户
提问于 2017-11-10 22:05:58
回答 2查看 56.1K关注 0票数 60

我发现Python (及其生态系统)充满了奇怪的约定和矛盾,这是另一个例子:

np.random.rand

创建一个给定形状的数组,并在[0,1]上使用均匀分布的随机样本填充它。

np.random.random

在半开区间[0.0,1.0]中返回随机浮动。结果来自于在所述区间上的“连续均匀”分布。

???那到底有什么区别?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-10 22:37:12

首先请注意,numpy.random.random实际上是numpy.random.random_sample的别名。我将在下面使用后者。(更多别名请参见这个问题和答案。)

这两个函数都从均匀分布生成示例。唯一的区别是如何处理参数。对于numpy.random.rand,输出数组的每个维度的长度是一个单独的参数。对于numpy.random.random_sample,shape参数是单个元组。

例如,要创建一个具有形状(3,5)的示例数组,可以编写

代码语言:javascript
复制
sample = np.random.rand(3, 5)

代码语言:javascript
复制
sample = np.random.random_sample((3, 5))

(真的,就是这样。)

更新

从1.17版本开始,NumPy就有了一个新的随机API。从[0,1)的均匀分布中生成样本的推荐方法是:

代码语言:javascript
复制
>>> rng = np.random.default_rng()  # Create a default Generator.
>>> rng.random(size=10)  # Generate 10 samples.
array([0.00416913, 0.31533329, 0.19057857, 0.48732511, 0.40638395,
       0.32165646, 0.02597142, 0.19788567, 0.08142055, 0.15755424])

新的Generator类没有rand()random_sample()方法。有一个uniform()方法允许您指定发行版的下界和上界。例如。

代码语言:javascript
复制
>>> rng.uniform(1, 2, size=10)
array([1.75573298, 1.79862591, 1.53700962, 1.29183769, 1.16439681,
       1.64413869, 1.7675135 , 1.02121057, 1.37345967, 1.73589452])

numpy.random名称空间中的旧函数将继续工作,但它们被认为是“冻结”的,没有正在进行的开发。如果您正在编写新代码,并且不需要支持numpy的前1.17版本,建议您使用新的随机API。

票数 59
EN

Stack Overflow用户

发布于 2021-02-17 13:07:35

我也有同样的问题。这表明输出是相同的。不同之处在于输入格式(维度的单个arg (元组或列表)与维度arg序列):

代码语言:javascript
复制
# 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]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47231852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档