Xor中的多个数组

时间:2018-06-02 08:02:37

标签: python matrix vector xor

我想在矩阵中组合多个数组以实现全0数组

(0,0,0,0,0)

例如:

我有这个矩阵,其中array [0]是每个数组的索引:

[0,(0,1,0,1,0)]
[1,(0,1,0,0,0)]
[2,(0,0,1,1,0)]
[3,(0,0,1,0,0)]
[4,(0,0,1,0,0)]

如果我xor数组3和4我得到一个全零数组或者我可以xor数组0,1,2和4.

我不知道python中是否存在任何库来计算这些东西。我一直在寻找它。

任何想法怎么做?

我尝试过numpy库并尝试使用xor方法

for i in range(len(MODS)):
        num = []
        for j in range(len(MODS[i][1])):
            if i+1 < len(MODS):
                if xor(MODS[i][1][j],MODS[i+1][1][j]) == 0:
                    num.append(0)
                    continue
                else:
                    break
            else:
                break

问题是此方法仅比较数组对。

我正在寻找可以解决问题的任何阵列组合。

1 个答案:

答案 0 :(得分:0)

这会找到xor值的所有行组合,结果为零(False)。

要查找所有行组合,请使用itertools.combinations

import numpy as np
from itertools import combinations

A = np.array([[0,1,0,1,0],
              [0,1,0,0,0],
              [0,0,1,1,0],
              [0,0,1,0,0],
              [0,0,1,0,0]])

print('All combinations of rows with xor resulting in zero: ')

for i in range(1, len(A)+1):
    for x in combinations(A, i):
        if not np.logical_xor.reduce(x).any():
            print(x)

# All combinations of rows with xor resulting in zero:
# (array([0, 0, 1, 0, 0]), array([0, 0, 1, 0, 0]))             
# (array([0, 1, 0, 1, 0]), array([0, 1, 0, 0, 0]), array([0, 0, 1, 1, 0]), array([0, 0, 1, 0, 0]))                        
# (array([0, 1, 0, 1, 0]), array([0, 1, 0, 0, 0]), array([0, 0, 1, 1, 0]), array([0, 0, 1, 0, 0]))