如何在同一列表中对成对元素进行异或

时间:2017-11-07 23:25:14

标签: python-2.7 numpy

我有一个总是二进制的列表。我想对每两个后果元素进行异或,以满足研究论文中的条件。例如:给定list=[1,0,1,1],每个连续对的异或应该是这样的:1 XOR 0 = 10 XOR 1 = 11 XOR 1 = 0。要做到这一点,XOR两个列表是否正确,其中第二个列表是原始的转移版本,如:numpy.bitwise_xor([1,0,1,1],[0,1,0,1])

2 个答案:

答案 0 :(得分:2)

您可以将输入列表作为数组加载(称为a)并使用numpy.roll移动数组,以便您现在拥有另一个存储移位数组的数组(称为b)。现在bitwise_xor可用于a,b。

 import numpy as np
 a = np.array([1,0,1,1])
 b= np.roll(a,len(a)-1)
 c = np.bitwise_xor(a,b)
 print(' A :',a,'\n','B :',b,'\n','C :',c)

输出:

 A : [1 0 1 1] 
 B : [0 1 1 1] 
 C : [1 1 0 0]

如果您使用的是python 2.7,请确保更改print语句!

答案 1 :(得分:0)

您也可以使用切片

>>> import numpy as np
>>> a = [1, 0, 1, 1]
>>> print np.bitwise_xor(a[1:], a[:-1])
array([1, 1, 0], dtype=int32)