【发布时间】:2019-02-06 16:03:00
【问题描述】:
我在计算不同类型的组合时很吃力。
让我们用一个例子来解释一下,我有这个数组,或者它可能是一个数据框,我想要其中一些列的不同组合。
然后我将把这个矩阵乘以组合来求和。
test = np.array ([[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33]])
前三列的可能组合是 [1,0,0],[0,1,0],[0,0,1],所以我需要 10 或 11 或 12 以下列,21 或 22,因此,组合 [1,0],[0,1] 而最后三列,31,3 2, 33,那么就是[1,0,0],[0,1,0],[0,0,1]
所以,我通过使用我在另一个问题中找到的这个函数得到了可能的组合。
n=3
for i in range(2**n):
s = bin(i)[2:]
s = "0" * (n-len(s)) + s
print (list(s))
这给了我:
['0', '0', '0']
['0', '0', '1']
['0', '1', '0']
['0', '1', '1']
['1', '0', '0']
['1', '0', '1']
['1', '1', '0']
['1', '1', '1']
所有可能的组合,包括零。虽然我设法删除了那些。
它计算的比我需要的组合多,我发现自己消除了太多我不需要的组合。
当我只需要这些情况时:
[1,0,0, 1,0, 1,0,0]
[0,1,0, 1,0, 1,0,0]
[0,0,1, 1,0, 1,0,0]
[1,0,0, 0,1, 1,0,0]
[0,1,0, 0,1, 1,0,0]
[0,0,1, 0,0, 1,0,0]
etc....
我需要删除与这 8 个案例无关的许多行,并删除我发现超过三个 1 的行,并选择 1 的正确位置,等等......根本没有效率。 我有点迷茫。
【问题讨论】:
-
"前三列的可能组合为 [1,0,0],[0,1,0],[0,0,1] 后两列为 [1,0] , [0,1] 和最后三个 [1,0,0],[0,1,0],[0,0,1]" 我完全不知道这有什么关系
test数组的先前定义。 -
对不起,错过了关键部分,我已经更新了我的问题:)
标签: python python-3.x numpy