【问题标题】:How to set random values to 2d-numpy-array where values are very low?如何将随机值设置为值非常低的 2d-numpy-array?
【发布时间】:2019-09-08 15:32:38
【问题描述】:

我有一个 2d-numpy-array (28x28) 并且想为所有值低于 50 的索引设置随机值。我尝试了一些方法:

myarray[myarray < 50] = random.randint(80,100)

这不能正常工作,因为所有选定的索引都获得相同的随机值。 我想要不同的随机值。

for y in range(28):
   for x in range(28):
      if myarray[y,x] < 50:
         myarray[y,x] = random.randint(80,100)

上面的代码正在解决问题,但我认为它不能有效地工作,因为它在处理大数据集时变得非常慢。

还有更好的功能吗?

【问题讨论】:

  • 您可以创建指定大小的随机数组,例如 numpy.random.randint(80,100,(3,2)) 将创建形状为 [3,2] 的数组,因此只需创建一个随机数组myarray 的大小docs.scipy.org/doc/numpy/reference/generated/…

标签: python arrays numpy


【解决方案1】:

首先,请改用np.random.uniform。见Generate random array of floats between a range

那么,

myarray[myarray < 50] = np.random.uniform(low=80, high=100,
       size=myarray[myarray < 50].shape)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2014-02-19
    相关资源
    最近更新 更多