我想用NumPy生成一个随机的n x n二进制矩阵,其中:

  • 每个值为01
  • 每行加起来是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

推荐答案

创建一个nn的标识矩阵,然后洗牌所有行.单位矩阵是一个二进制矩阵,其中每一行和每一列的总和为一,对行进行洗牌将保留此属性:

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.]]

Python相关问答推荐

取相框中一列的第二位数字

Python中两个矩阵的自定义Hadamard风格产物

Python如何让代码在一个程序中工作而不在其他程序中工作

按 struct 值对Polars列表[struct[]]排序

如何让我的Tkinter应用程序适合整个窗口,无论大小如何?

Pandas :多索引组

理解Python的二分库:澄清bisect_left的使用

将整组数组拆分为最小值与最大值之和的子数组

如何避免Chained when/then分配中的Mypy不兼容类型警告?

如何根据参数推断对象的返回类型?

Python 约束无法解决n皇后之谜

如何在Windows上用Python提取名称中带有逗号的文件?

将数据框架与导入的Excel文件一起使用

按列分区,按另一列排序

计算组中唯一值的数量

当从Docker的--env-file参数读取Python中的环境变量时,每个\n都会添加一个\'.如何没有额外的?

如何让这个星型模式在Python中只使用一个for循环?

用砂箱开发Web统计分析

Python Pandas获取层次路径直到顶层管理

幂集,其中每个元素可以是正或负""""