【问题标题】:Generating an NxM array of uniformly distributed random numbers over a stated interval (not [0,1)) in numpy在 numpy 中生成一个均匀分布的随机数的 NxM 数组(不是 [0,1))
【发布时间】:2019-07-03 00:25:19
【问题描述】:

我知道 numpy.random.rand() 命令,但是似乎没有任何变量允许您将选择数字的统一间隔调整为 [0,1) 以外的值。

我考虑使用 for 循环,即启动所需大小的零数组,并使用 numpy.random.unifom(a,b,N) 在区间 (a,b) 中生成 N 个随机数,然后放入这些进入启动的数组。我不知道这个模块会创建一个任意维度的数组,比如上面的 rand。这显然是不优雅的,尽管您主要关心的是运行时间。我认为这种方法的运行时间比从一开始就使用适当的随机数生成器要长得多。

编辑和额外的想法:我工作的间隔是 [0,pi/8) 小于 1。严格来说,如果我只是重新缩放,我不会影响生成数字的随机性,而是相乘每个生成的随机数显然会增加计算时间,我推测元素数量的顺序是一个因素。

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

    np.random.uniform 接受低和高:

    In [11]: np.random.uniform(-3, 3, 7)  # 7 numbers between -3 and 3
    Out[11]: array([ 2.68365104, -0.97817374,  1.92815971, -2.56190434,  2.48954842, -0.16202127, -0.37050593])
    

    【讨论】:

    • 我的帖子应该更清楚一点。我的意思是生成一个 NxM 而不仅仅是 1xM 的数组。
    • 完美!有效!谢谢 - 这似乎不在 numpy 手册中。
    【解决方案2】:

    numpy.random.uniform 接受 size 参数,您可以将数组的大小作为元组传递。要生成 MxN 数组,请使用

    np.random.uniform(low,high, size=(M,N))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 2015-08-14
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2013-05-10
      相关资源
      最近更新 更多