【问题标题】:Generate list of floats where each number is inferior to the number of another list of floats生成浮动列表,其中每个数字都低于另一个浮动列表的数量
【发布时间】:2019-08-18 07:46:38
【问题描述】:

我正在使用以下代码来获取浮点数的随机列表:

random_A = np.random.uniform(low=0, high=10, size=(50,))

所以我得到了一个包含 50 个浮点数的列表

[0.35664866 4.76750599 2.05083389 9.53811567 5.36920383 8.91679955
 2.19965617 2.62523134 6.55224616 9.35766331 5.79652488 4.23194067
 2.72168337 5.31431884 8.3975979  9.29497168 5.42797236 5.64302212
 2.91821098 5.06305922 1.88212402 0.24593891 9.45021432 0.95423611
 9.36860165 2.46100709 3.80709829 1.08442665 3.28513088 9.75743916
 5.36187267 4.61001088 0.17912406 6.52406152 3.26927165 4.40187936
 6.79600876 8.10418648 1.06927133 5.3087785  1.85829928 2.20111922
 1.6910625  6.25714944 0.29338196 5.73195802 0.73971446 3.62506435
 9.0166149  3.90316395]

我现在想得到的是另一个 50 个浮点数的列表,我们称之为 random_B,其中该列表的每个浮点数都低于第一个列表中比较的数字 (random_A)。你能帮帮我吗?

问候

【问题讨论】:

  • 你的意思是说,“对于random_A 中的每个浮点元素,在random_B 的同一索引处都有一个对应的劣等浮点数”?

标签: python list numpy random


【解决方案1】:

这是一种间接的方法:生成第一个数组,然后使用该数组的单个元素作为上限,使用np.random.uniform再次生成第二个数组

import numpy as np; np.random.seed(121)

random_A = np.random.uniform(low=0, high=10, size=(10,))
print (random_A)
# [1.11330828 2.10767575 2.32962488 1.51944557 8.30178138 4.07919415 5.557906   7.45523942 2.48499756 9.68659399]

random_B = np.array([np.random.uniform(0, i) for i in random_A])
print (random_B)
# [1.06063118 1.03244254 0.04262587 1.30308582 3.36170915 2.53919206 1.64164697 6.93030501 1.00795353 5.49521109]

编辑

@Severin 在下面的 cmets 中建议更好

random_B = np.random.uniform(low=0, high=random_A, size=(10,))

【讨论】:

  • 它很慢,不要使用循环 - 只需 random_B = np.random.uniform(low=0, high=random_A, size=(10,))
  • @SeverinPappadeux:感谢您的精彩回答。作为您的建议,我已将其添加到答案中
猜你喜欢
  • 2017-08-25
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2017-05-01
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多