Numpy 随机二维数组

uni*_*niQ 5 python numpy

我想在 numpy 中创建一个二维均匀随机数组,如下所示:

A=[[a1,b1],
   [a2,b2],
   ...,
   [a99,b99]]
Run Code Online (Sandbox Code Playgroud)

但我希望 A 列的值在一定范围内(例如 1-10 之间),而 B 列的值在不同范围内(例如 11-20)。

在Python中如何获得这个?

Div*_*kar 4

两种方式。

我们可以堆叠两个随机数组并正确分配lowhigh值 -

In [39]: n = 10000 # no. of rows

In [40]: np.c_[np.random.randint(1,11,(n)), np.random.randint(11,21,(n))]
Out[40]: 
array([[ 6, 19],
       [ 8, 18],
       [ 6, 11],
       ..., 
       [ 5, 12],
       [10, 16],
       [ 7, 17]])

In [41]: _.min(0), _.max(0) # verify
Out[41]: (array([ 1, 11]), array([10, 20]))
Run Code Online (Sandbox Code Playgroud)

另一种方法是创建带有[1,10]间隔的二维随机数组,然后10为第二列添加偏移量,从而获得[11,20]它的间隔 -

In [42]: np.random.randint(1,11,(n,2)) + [0,10]
Out[42]: 
array([[10, 16],
       [ 9, 12],
       [ 4, 17],
       ..., 
       [ 7, 15],
       [ 5, 11],
       [ 4, 14]])

In [43]: _.min(0), _.max(0) # verify
Out[43]: (array([ 1, 11]), array([10, 20]))
Run Code Online (Sandbox Code Playgroud)