2014-05-12 2 views
2

XOR 추가를 사용하여 두 행렬을 곱하는 방법을 잘 모르겠습니다. 여기에 예를 들어파이썬에서의 XOR 매트릭스 곱셈

1(1) xor 0(1) xor 1(0) xor 1(1) = 0 
1(1) xor 1(1) xor 1(0) xor 0(1) = 0 
0(1) xor 1(1) xor 1(0) xor 1(1) = 0 

어떤 제안 : 나는 4, 5, 및 결과 배열의 6 번째 인덱스를 싶습니다

>>> b = numpy.array([[1, 0, 0, 0, 1, 1, 0], 
        [0, 1, 0, 0, 0, 1, 1], 
        [0, 0, 1, 0, 1, 1, 1], 
        [0, 0, 0, 1, 1, 0, 1]]) 
>>> z = numpy.array([1, 1, 0, 1]) 
>>> z.dot(b) 
array([1, 1, 0, 1, 2, 2, 2]) 

에 의해 계산된다?

+0

'z.dot (b) % 2'은 어떻습니까? – Blckknght

+0

나는 그것이 작동해야한다고 생각한다, 고마워! – user3562967

답변

2

내가 설명한대로 z.dot(b) % 2을 사용하여 원하는 값을 얻을 수 있습니다. 이는 이 더하기 mod 2와 같기 때문입니다. 즉, 1의 수가 홀수 일 경우 결과는 1이고 짝수 인 경우 0이됩니다.