np.random.rand vs np.random.random

Spa*_*key 29 python numpy

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

np.random.rand

创建给定形状的数组,并使用来自[0,1]的均匀分布的随机样本填充它.

np.random.random

在半开区间[0.0,1.0]中返回随机浮点数.结果来自所述间隔的"连续均匀"分布.

??? 究竟有什么区别?

War*_*ser 22

首先要注意的是,numpy.random.random它实际上是一个别名numpy.random.random_sample.我将在下面使用后者.(有关更多别名,请参阅此问题和答案.)

两个函数都从[0,1]上的均匀分布生成样本.唯一的区别在于如何处理参数.使用时numpy.random.rand,输出数组的每个维度的长度是一个单独的参数.有了numpy.random.random_sample,shape参数是一个单元组.

例如,要创建具有形状(3,5)的样本数组,您可以编写

sample = np.random.rand(3, 5)
Run Code Online (Sandbox Code Playgroud)

要么

sample = np.random.random_sample((3, 5))
Run Code Online (Sandbox Code Playgroud)

(真的,就是这样.)

  • 它看起来像Python的社区价值观"快速黑客,因为它对我而言很容易".最好的例子是matplotlib在创建子图时使用像"112"这样的数字表示(1,1,2)的约定..无论如何,谢谢你的回答. (7认同)
  • 是的,所以实际上没有区别。我想知道为什么我们有两个具有不同名称的函数做同样的事情。恕我直言,他们应该清理这个。 (2认同)