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