【问题标题】:Random 2D array without specifying min and max不指定最小值和最大值的随机二维数组
【发布时间】:2021-05-23 05:33:38
【问题描述】:

在 Python 中,有没有一种方法可以使用 numpy 生成一个二维数组,其中包含随机整数条目而不指定低或高?

我试过mat = np.random.randint(size=(3, 4)),但没用。

【问题讨论】:

  • 不,在数学上不可能创建一个范围(-inf,inf)均匀分布的随机数生成器,但可以使用其他分布。您可以使用正态分布并对值进行四舍五入。

标签: python arrays numpy random integer


【解决方案1】:

假设您不想指定数组的最小值或最大值,可以使用numpy.random.normal

np.random.normal(mean, standard deviation, (rows,columns))

然后用astype(np.int)四舍五入,为

>>> import numpy as np
>>> mat = (np.random.normal(1, 3, (3,4))).astype(np.int)
[[ 0  0  0 -1]
[ 0  5  0  0]
[-5  1  2  2]]

请注意,输出可能会有所不同,因为值是随机的。


如果你想指定最小值和最大值,有多种方法可以做到这一点,例如

mat = (np.random.random((3,4))*10).astype(np.int) # Random ints between 0 and 10

mat = np.random.randint(1,5, size=(3,4)) # Random ints between 1 and 5

还有更多。

【讨论】:

  • 我不明白。 OP 要求 “不指定低位或高位的整数条目” 并且您提供了一个带小数的解决方案和两个指定低位和高位的解决方案。
  • @ThomasSablik 第一个只有小数,因为我忘记添加astype(int),但后来更正了。带有 min 和 max 的选项是一个加号,可以帮助那些遇到答案并且没有该限制的人。
猜你喜欢
  • 2017-03-16
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 2017-09-28
  • 2019-03-31
  • 2018-07-01
相关资源
最近更新 更多