随机二进制矩阵,其中行和列使用numpy总和到1
我想使用numpy生成一个随机nx n
二进制矩阵,其中:
- 每个值是
0
或 1 - 每行总和
1
- 每个列总和
1
例如,有效的矩阵可能是
[[1 0 0]
[0 0 1]
[0 1 0]]
无效的矩阵,
[[1 0 0]
[0 0 1]
[0 0 1]]
我尝试执行以下操作,但是我无法弄清楚如何将值调整为在每列中,都使用唯一的索引。如何生成遵守上述约束的矩阵?
N = 10
a = np.zeros((N,N))
a[0,:] = 1
I want to generate a random n x n
binary matrix using NumPy, where:
- each value is either
0
or1
- every row sums up to
1
- every column sums up to
1
For example, a valid matrix might be
[[1 0 0]
[0 0 1]
[0 1 0]]
while an invalid one is
[[1 0 0]
[0 0 1]
[0 0 1]]
I tried doing the following, but I couldn't figure out how to shuffle the values in each column using a unique index. How do I generate a matrix that adheres to the above constraints?
N = 10
a = np.zeros((N,N))
a[0,:] = 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
创建一个
n
×n
单位矩阵,然后打乱所有行。单位矩阵是一个二进制矩阵,其中每行和每列的总和为 1,并且对行进行洗牌可以保留此属性:这将输出类似以下内容的内容:
Create an
n
byn
identity matrix, and then shuffle all of the rows. The identity matrix is a binary matrix where each row and column sums to one, and shuffling the rows preserves this property:This will output something like:
使用 > 创建随机列索引,然后使用高级索引用1s填充索引:
Use
np.random.permutation
to create random column indices and then use advanced indexing fill indices with 1s: