2017-11-07 6 views
0

リストは常にバイナリです。私は研究論文の条件を満たすために2つの合理的な要素をすべてXORしたいと思う。例えば、list=[1,0,1,1]とすると、それぞれの連続する対は、1 XOR 0 = 1,0 XOR 1 = 11 XOR 1 = 0のようになるはずです。これを行うには、2番目のリストがオリジナルのシフトされたverisonである2つのリストをXORするのは正しいですか?numpy.bitwise_xor([1,0,1,1],[0,1,0,1])同じリスト内の要素を排他的にXORする方法

+0

あなたはペアごとのXORため、結果として、3つの要素を取得しないでしょうスライスを使用することができますか? – percusse

答えて

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文を作ります!

+0

ありがとうございます。良いアイデア – Kris

0

また

>>> import numpy as np 
>>> a = [1, 0, 1, 1] 
>>> print np.bitwise_xor(a[1:], a[:-1]) 
array([1, 1, 0], dtype=int32) 
関連する問題