首页 > 解决方案 > 在 Numpy 中生成强对称矩阵

问题描述

关于如何有效地生成任意 numpy 固定维度数组的任何想法,(n,m)其中所有行都是彼此的排列,所有列都是彼此的排列(即强对称)?

标签: pythonnumpymatrixpermutationsymmetric

解决方案


这是生成一些此类数组的一种方法。让成为和a的最大公约数。 nm

  1. 将整个数组拆分aa
  2. 在每个块上,生成一个拉丁方格(请参阅问题进行讨论)
  3. 随机排列数组的行和列
  4. 如果需要,执行符号替换。也就是说,如果a是 3,也许你把网格中的所有 3 都变成了 2。

我不确定这种方法是否可以生成所有可能的此类网格,但它应该能够生成其中的许多。步骤 1 和 2 完成后,您将拥有一个有效的数组,其余步骤只是增加了更多随机性。

当然,生成这样一个数组的最简单方法就是将其全部填充为 1,但这不是您想要的。


推荐阅读