Python 中的多个数组异或
Xor multiple arrays in Python
我想将多个数组组合成一个矩阵来实现全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)]
如果我对数组 3 和 4 进行异或,我得到一个全零数组,或者我可以对数组 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
问题是这种方法只比较成对的数组。
我正在寻找可以解决问题的任何数组组合。
这将查找具有 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]))
我想将多个数组组合成一个矩阵来实现全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)]
如果我对数组 3 和 4 进行异或,我得到一个全零数组,或者我可以对数组 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
问题是这种方法只比较成对的数组。
我正在寻找可以解决问题的任何数组组合。
这将查找具有 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]))