在 Numpy 中生成强对称矩阵
Generating a Strongly Symmetric Matrix in Numpy
关于如何有效地生成固定维度的任意 numpy 数组 (n,m)
的任何想法,其中所有行都是彼此的排列并且所有列都是彼此的排列(即强对称)?
这是生成此类数组的一种方法。设 a
为 n
和 m
的最大公约数。
- 将整个数组分成
a
a
个块
- 在每个块上,生成一个拉丁方(讨论见this问题)
- 随机排列数组的行和列
- 如果需要,执行符号替换。也就是说,如果
a
是 3,也许你把网格中的所有 3 都变成 2。
我不确定这种方法是否可以生成所有可能的这样的网格,但它应该能够生成很多这样的网格。完成第 1 步和第 2 步后,您将拥有一个有效数组,其余步骤只会增加更多随机性。
当然,生成这样一个数组的最简单方法就是将其全部填充为 1,但这不是您要找的。
关于如何有效地生成固定维度的任意 numpy 数组 (n,m)
的任何想法,其中所有行都是彼此的排列并且所有列都是彼此的排列(即强对称)?
这是生成此类数组的一种方法。设 a
为 n
和 m
的最大公约数。
- 将整个数组分成
a
a
个块 - 在每个块上,生成一个拉丁方(讨论见this问题)
- 随机排列数组的行和列
- 如果需要,执行符号替换。也就是说,如果
a
是 3,也许你把网格中的所有 3 都变成 2。
我不确定这种方法是否可以生成所有可能的这样的网格,但它应该能够生成很多这样的网格。完成第 1 步和第 2 步后,您将拥有一个有效数组,其余步骤只会增加更多随机性。
当然,生成这样一个数组的最简单方法就是将其全部填充为 1,但这不是您要找的。