代码之家  ›  专栏  ›  技术社区  ›  Carpetfizz

Numpy生成不超过N个的二进制数组

  •  0
  • Carpetfizz  · 技术社区  · 7 年前

    通过这样做,我可以轻松地在Numpy中创建一个随机二进制数组

    random_mask = np.random.randint(0,2, (r, c))
    

    但我真正想要的是设置数组中的最大1数。

    例如,如果我想要一个5,5的二进制矩阵,我希望在整个矩阵中随机放置最多10个,其余为0。

    我想知道在numpy是否已经有办法做到这一点

    1 回复  |  直到 7 年前
        1
  •  1
  •   user8408080 Gilad Naor    7 年前

    这是我能想到的最基本的方法:

    import numpy as np
    
    def binary_mask_random(r, c, n):
        a = np.zeros((r,c)).flatten()
    
        for i in range(np.random.randint(0, n+1)):
            x = np.random.randint(0, r*c)
            a[x] = 1
    
        return a.reshape((r,c))
    

    1xr*c 零数组,并用最多 n 1 它在任意位置。返回一个 rxc