【发布时间】:2014-03-14 09:54:08
【问题描述】:
如何有效地遍历所有由 0 和 1 组成的 h × n 数组,其中所有行和所有列都是不同的?目前我正在这样做。
h = 10
n = 15
hxn = np.arange(h*n).reshape(h, -1)
for i in xrange(0, 2**(h*n)):
M = (i >> hxn) & 1
#DO WORK
但这包括许多行或列相同的二维数组。我也不关心行或列的顺序。
我不想只测试每个 M 以查看它是否有重复的行或列并丢弃它们,因为这将非常低效。我想找到一种方法来迭代数量少得多且没有重复行或列的矩阵。
【问题讨论】:
-
您是在尝试首先确定矩阵的行和列是否不同,然后对它们进行操作,还是对给定矩阵中的每个不同的行和/或列执行操作?
-
@ap 这些都不是。我想通过 n 个矩阵迭代所有 h 的子集。那只是矩阵没有重复的行或列。
-
你确定它非常低效吗?你期待什么形状的矩阵?
-
@user2357112 形状是 h × n。在这种情况下,二进制 10 x 15 矩阵的总数为 2^(150)。但是没有重复列行的二进制 10 x 15 矩阵的数量要少得多。
-
其实不是。一个非常粗略的上限表示,最多 10.4% 的 10 x 15 二进制矩阵有重复的行或列。