【问题标题】:Generate Random Number within range using Numpy使用 Numpy 在范围内生成随机数
【发布时间】:2020-07-06 07:39:26
【问题描述】:

我有ranges,其中每个元组代表一个随机数的范围。例如:

ranges = [(-1,100), (0,1), (50, 5000)]

现在,我想创建一个 numpy 数组,其中数组的每个元素都是从 ranges 的相应元组中随机生成的。

伪代码:

rand_array = numpy.array[randomly generate element1 from (-1,100), randomly generate element2 from (0,1), randomly generate element3 from (50,500)]

当然,幼稚的做法是:

rand_array = [random.uniform(coord[0], coord[1]) for coord in ranges]

但我想以 numpy 的方式进行,因为我的整个代码都接受 numpy 数组数据类型。另一种解决方案是将天真生成的rand_array 转换为numpy 数组。但我认为效率不高。有没有办法做到这一点?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    大多数随机函数都接受数组参数。所以你可以这样做

    np.random.uniform(*np.transpose(ranges))
    

    通常的广播规则适用,例如,获得 10 个三胞胎

    np.random.uniform(*np.transpose(ranges),(10,3))
    

    【讨论】:

    • 谢谢。如何以这种方式生成x元素个数?有没有办法这样做:np.random.uniform(x, *np.transpose(ranges))(其中x 是一个整数,指定元素的数量或numpy 数组的行)。抱歉,我忘了把它包括在内。
    猜你喜欢
    • 2017-04-21
    • 2010-12-24
    • 2015-08-27
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多