我想创建一个接受三个参数(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`
提前致谢
不是 100% 清楚如何指定密度,但假设它是一个百分比,这里有一种方法:
m*n
零组成的数组。d
%。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.]])