2012-11-15 3 views
2

배열 AB은 모두 MxNxH 크기입니다.3D 배열 곱

결과가 MxN 차원이되도록 "곱하기"로 이진 연산자를 정의하고 싶습니다.

동등한 작업은 다음과 같습니다보다 효율적인 방법으로이 작업을 할 수있는 방법은

C = A[:,:,0] * B[:,:,0] + A[:,:,1] * B[:,:,1] + .... + A[:,:,H] * B[:,:,H] 

있습니까?
예를 들어, numpy에서 내장 함수를 사용합니까?

나는 tensordot을 시도했지만이 결과는 다릅니다.

+0

그건 "곱하는"것이 아닙니다 ... –

답변

2

가장 쉬운입니다

C = numpy.sum(A * B, -1) 

나는이 너무 일 것 같아요 :

C = numpy.einsum("...i,...i->...", A, B) 
1

이 시도 : numpy.sum (A *의 B를, 축 = 2)

이 다른 제안과 비슷하지만 아마도 더 명확합니다 (축은 0부터 번호가 매겨 지므로 축 = 2가 MxNxH의 세 번째 축 또는 H입니다)