python - 在 Numpy 中生成强对称矩阵
问题描述
关于如何有效地生成任意 numpy 固定维度数组的任何想法,(n,m)
其中所有行都是彼此的排列,所有列都是彼此的排列(即强对称)?
解决方案
这是生成一些此类数组的一种方法。让成为和a
的最大公约数。 n
m
- 将整个数组拆分
a
成a
块 - 在每个块上,生成一个拉丁方格(请参阅此问题进行讨论)
- 随机排列数组的行和列
- 如果需要,执行符号替换。也就是说,如果
a
是 3,也许你把网格中的所有 3 都变成了 2。
我不确定这种方法是否可以生成所有可能的此类网格,但它应该能够生成其中的许多。步骤 1 和 2 完成后,您将拥有一个有效的数组,其余步骤只是增加了更多随机性。
当然,生成这样一个数组的最简单方法就是将其全部填充为 1,但这不是您想要的。
推荐阅读
- html - 有没有办法让这个 html 文本适合移动屏幕并自动换行?
- python - 在大文件的内容中获取一行
- delphi - 如何初始化我的自定义 IdIOHandler 字段?
- rust - 将结构转换为特征
- laravel - TinyMCE 5的文件管理器不显示上传的图像,找不到404图像,但它存在于文件夹中 - Laravel
- java - 如何将数据推送到firebase?
- css - 使用复选框默认显示/隐藏以使用纯 CSS 隐藏
- javascript - Discord .setImage 文件不在嵌入中,而是在它之前发送
- python - 如何使用 norm.ppf() 查找 z 值?
- spring-boot - Spring Boot 2 使用 Webflux、Netty 和 HTTP2,导致证书无效,可能配置错误