【问题标题】:numpy random array values between -1 and 1numpy 随机数组值介于 -1 和 1 之间
【发布时间】:2019-04-20 01:05:13
【问题描述】:

创建一个给定size 的 NumPy 数组的最佳方法是什么?该数组的值随机且均匀地分布在 -11 之间?

我试过2*np.random.rand(size)-1

【问题讨论】:

  • 它应该可以工作。
  • 我觉得你的方式很好。
  • 你尝试的有什么问题?
  • 谢谢。你是对的,它有效。我正在寻找一个 numpy 函数,它可以在没有 x2 技巧的情况下为我提供这样的数组。

标签: python numpy


【解决方案1】:

我不确定。试试:

s = np.random.uniform(-1, 1, size)

参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html

【讨论】:

    【解决方案2】:

    我可以使用numpy.arange:

    import numpy as np
    
    print(np.arange(start=-1.0, stop=1.0, step=0.2, dtype=np.float))
    

    step 参数定义了元素分布的大小和均匀性。

    【讨论】:

      【解决方案3】:

      在您的解决方案中,np.random.rand(size) 在半开区间 [0.0, 1.0) 中返回随机浮点数

      这意味着2 * np.random.rand(size) - 1 返回半开区间 [0, 2) - 1 := [-1, 1) 中的数字,即范围包括 -1 但不包括 1。

      如果这是你想做的,那没关系。

      但是,如果您希望生成开区间 (-1, 1) 中的数字,即 介于 -1 和 1 之间,因此 不包括 -1 或1,我可以建议以下 -

      from numpy.random import default_rng
      rg = default_rng(2)
      
      size = (5,5)
      
      rand_arr = rg.random(size)
      rand_signs = rg.choice([-1,1], size)
      
      rand_arr = rand_arr * rand_signs
      
      print(rand_arr)
      

      我已经为每个 numpy 使用了新的建议生成器,请参阅链接 https://numpy.org/devdocs/reference/random/index.html#quick-start

      【讨论】:

        猜你喜欢
        • 2021-01-01
        • 2012-11-03
        • 1970-01-01
        • 2016-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-29
        • 2012-04-10
        相关资源
        最近更新 更多