在具有不同的元件组合蟒

问题描述 投票:0回答:1

计算不同类型的组合,当我挣扎。

让我们来举个例子,我有这样的阵列或者它可能是一个数据帧,我想从它的一些列的不同组合。

正如我会再由组合乘以这个矩阵来概括的数字。

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的正确定位,等等......没有效率可言。我有点失落。

python python-3.x numpy
1个回答
0
投票

我真的不明白的例子背后的逻辑,但这并解决问题了吗?

from itertools import product,permutations

a = set(permutations([0,0,1]))
b = set(permutations([0,1]))

comb = []
for t1,t2,t3 in product(a,b,a):
    comb.append([*t1,*t2,*t3])

print(comb)

# [[1, 0, 0, 0, 1, 1, 0, 0],
#  [1, 0, 0, 0, 1, 0, 1, 0],
#  [1, 0, 0, 0, 1, 0, 0, 1],
#  [1, 0, 0, 1, 0, 1, 0, 0],
#  [1, 0, 0, 1, 0, 0, 1, 0],
#  [1, 0, 0, 1, 0, 0, 0, 1],
#  [0, 1, 0, 0, 1, 1, 0, 0],
#  [0, 1, 0, 0, 1, 0, 1, 0],
#  [0, 1, 0, 0, 1, 0, 0, 1],
#  [0, 1, 0, 1, 0, 1, 0, 0],
#  [0, 1, 0, 1, 0, 0, 1, 0],
#  [0, 1, 0, 1, 0, 0, 0, 1],
#  [0, 0, 1, 0, 1, 1, 0, 0],
#  [0, 0, 1, 0, 1, 0, 1, 0],
#  [0, 0, 1, 0, 1, 0, 0, 1],
#  [0, 0, 1, 1, 0, 1, 0, 0],
#  [0, 0, 1, 1, 0, 0, 1, 0],
#  [0, 0, 1, 1, 0, 0, 0, 1]]
© www.soinside.com 2019 - 2024. All rights reserved.