创建由 0 和 1 组成的矩阵的函数,具有一定的 1 密度

问题描述 投票:0回答:1

我想创建一个接受三个参数(n,m,d)的函数,它应该输出一个包含 n 行和 m 列的矩阵。 矩阵应随机填充值 0 和 1,以确保密度为 d。

这是我到目前为止所想到的,只是似乎无法弄清楚如何整合密度变量。

`def create_matrix(n, m):
    count = 1
    grid = []
    while count <= n:
        for i in range(m):
            
            x = [random.randrange(0,2) for _ in range(m)]
            grid.append(x)

            count += 1

    return grid`

提前致谢

python python-3.x matrix
1个回答
0
投票

不是 100% 清楚如何指定密度,但假设它是一个百分比,这里有一种方法:

  1. 制作一个由
    m*n
    零组成的数组。
  2. 用 1 填充第一个
    d
    %。
  3. 随机播放
  4. 调整大小为
    m x n

例如:

def create_matrix(n, m, d):
    l = m * n
    mat = np.zeros(l)
    num_ones = int(l * d)
    mat[:num_ones] = 1
    
    np.random.shuffle(mat)
    mat.resize([n, m])
    return mat

# create 5 x 4 matrix with 20% ones:
create_matrix(5, 4, .2)

# array([[0., 0., 0., 0.],
#        [0., 0., 0., 0.],
#        [0., 0., 0., 1.],
#        [1., 0., 0., 1.],
#        [1., 0., 0., 0.]])
© www.soinside.com 2019 - 2024. All rights reserved.