【问题标题】:np.random.randn refuses to take negative argumentsnp.random.randn 拒绝接受否定的论点
【发布时间】:2019-01-31 22:42:53
【问题描述】:
import numpy as np
a=[2,4,6,-1,4]
#b=[np.random.randn(0,2) for i in a[1:]]
#print(b)
b=[np.random.randn(x,y) for x, y in zip(a[1:], a[1:])]
print(b)

输出

ValueError                                Traceback (most recent call 
last)
<ipython-input-34-b2077da31d55> in <module>()
      3 #b=[np.random.randn(0,2) for i in a[1:]]
      4 #print(b)
----> 5 b=[np.random.randn(x,y) for x, y in zip(a[1:], a[1:])]
      6 b

<ipython-input-34-b2077da31d55> in <listcomp>(.0)
      3 #b=[np.random.randn(0,2) for i in a[1:]]
      4 #print(b)
----> 5 b=[np.random.randn(x,y) for x, y in zip(a[1:], a[1:])]
      6 b

mtrand.pyx in mtrand.RandomState.randn()

mtrand.pyx in mtrand.RandomState.standard_normal()

mtrand.pyx in mtrand.cont0_array()

ValueError: negative dimensions are not allowed

无论我给出什么 a[x1:x2],错误都会不断抛出。

我缺少什么明显的东西?

我对 numpy 比较陌生,所以请不要介意这是否非常基础。

【问题讨论】:

  • 你为什么要给它一个负值?您需要重新阅读此函数的参数。
  • 您要创建什么样的随机数,目前您正在创建randn(4, 4)rand(6, 6) 分别创建大小为46 的二维方阵。你期望一个大小为-1 的二维方阵给出什么?
  • 欢迎来到 StackOverflow。写一个好问题的一部分是解释你想要完成的事情。目前,我们只有您得到的结果,而不是您希望的结果。

标签: python numpy random valueerror


【解决方案1】:

根据numpy.Random.randn的文档

返回数组的维度,应该都是正数。如果没有给出参数,则返回单个 Python 浮点数。

您将控制数组维度的参数误认为是随机数的上限和下限。由于数组不能有负索引,因此数组的维度不能使用负数。

您不清楚您要在问题中完成什么,但您似乎想要一个上下边界之间的随机数数组。相反,您当前的实现是创建一个 2x2、4x4 等二维数组。

【讨论】:

  • 谢谢,但如果 OP 自己查看了文档,这个问题本可以避免。我什至不确定他们想在这里做什么。
猜你喜欢
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多