np.random.randn拒绝接受否定论据

np.random.randn refuses to take negative arguments

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 的新手,所以如果这是非常基础的,请不要介意。

根据 numpy.Random.randn

的文档

The dimensions of the returned array, should be all positive. If no argument is given a single Python float is returned.

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

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