numpy.zeros和numpy.random.randn的不一致numpy参数的任何原因

时间:2017-09-10 06:15:29

标签: numpy

我使用numpy零和numpy.random.randn实现计算

W1 = np.random.randn(n_h, n_x) * .01
b1 = np.zeros((n_h, 1))

我不确定为什么 random.randn() 可以接受两个整数,而 zeros() 需要一个元组。有这么好的理由吗?

干杯,JChen。

1 个答案:

答案 0 :(得分:7)

最有可能的只是历史问题。 numpy来自几个先前包的合并,并且有很长的发展。一些怪癖得到了清理,其他人则保持原样。

randn(d0, d1, ..., dn)
zeros(shape, dtype=float, order='C')

randn有这样的说明:

  

这是一项便利功能。如果你想要一个接口   将元组作为第一个参数,改为使用numpy.random.standard_normal

standard_normal(size=None)

使用*很容易将元组传递给randn

np.random.randn(*(1,2,3))

np.zeros需要几个关键字参数。 randn没有。您可以使用(*args, **kwargs)签名定义Python函数。但是接受一个元组,特别是一个常用于shape的元组,更适合。但这是一个意见问题。

np.random.randnp.random.random_sample是另一对。最有可能randrandn是旧版本,standard_normalrandom_sample是较新版本,旨在符合更常见的tuple样式。