我想用NumPy生成一个随机的n x n
二进制矩阵,其中:
- 每个值为
0
或1
- 每行加起来是
1
- 每一栏加起来是
1
例如,一个有效的矩阵可能是
[[1 0 0]
[0 0 1]
[0 1 0]]
而一个无效的
[[1 0 0]
[0 0 1]
[0 0 1]]
我try 了以下操作,但我不知道如何使用唯一的索引来洗牌每列中的值.如何生成符合上述约束条件的矩阵?
N = 10
a = np.zeros((N,N))
a[0,:] = 1
我想用NumPy生成一个随机的n x n
二进制矩阵,其中:
0
或1
1
1
例如,一个有效的矩阵可能是
[[1 0 0]
[0 0 1]
[0 1 0]]
而一个无效的
[[1 0 0]
[0 0 1]
[0 0 1]]
我try 了以下操作,但我不知道如何使用唯一的索引来洗牌每列中的值.如何生成符合上述约束条件的矩阵?
N = 10
a = np.zeros((N,N))
a[0,:] = 1
创建一个n
乘n
的标识矩阵,然后洗牌所有行.单位矩阵是一个二进制矩阵,其中每一行和每一列的总和为一,对行进行洗牌将保留此属性:
n = 5
result = np.identity(n)
np.random.shuffle(result)
print(result)
这将输出如下内容:
[[0. 1. 0. 0. 0.]
[0. 0. 0. 0. 1.]
[0. 0. 0. 1. 0.]
[1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0.]]