# [Numpy-discussion] Combination of element-wise and matrix multiplication

Jonno jonnojohnson@gmail....
Fri Jul 4 09:09:59 CDT 2008

```Awesome. I just added rollaxis(c,0,3) and was done.

Cheers mate.

On Fri, Jul 4, 2008 at 2:38 AM, lorenzo bolla <lbolla@gmail.com> wrote:
> If a and b are 2d arrays, you can use numpy.dot:
>
> In [36]: a
> Out[36]:
> array([[1, 2],
>        [3, 4]])
> In [37]: b
> Out[37]:
> array([[5, 6],
>        [7, 8]])
> In [38]: numpy.dot(a,b)
> Out[38]:
> array([[19, 22],
>        [43, 50]])
>
> If a and b are 3d arrays of shape 2x2xN, you can use something like that:
> In [52]: a = numpy.arange(16).reshape(2,2,4)
> In [53]: b = numpy.arange(16,32).reshape(2,2,4)
> In [54]: c = numpy.array([numpy.dot(a[...,i],b[...,i]) for i in
> xrange(a.shape[-1])])
> In [55]: c.shape
> Out[55]: (4, 2, 2)
>
> Here c has shape (4,2,2) instead (2,2,4), but you got the idea!
>
> hth,
> L.
>
>
> On Thu, Jul 3, 2008 at 9:53 PM, Jonno <jonnojohnson@gmail.com> wrote:
>>
>> I have two 2d arrays a & b for example:
>> a=array([c,d],[e,f])
>> b=array([g,h],[i,j])
>> Each of the elements of a & b are actually 1d arrays of length N so I
>> guess technically a & b have shape (2,2,N).
>> However I want to matrix multiply a & b to create a 2d array x, where
>> the elements of x are created with element-wise math as so:
>> x[0,0] = c*g+d*i
>> x[0,1] = c*h+d*j
>> x[1,0] = e*g+f*i
>> x[1,1] = e*h+f*j
>>
>> What is the simplest way to do this? I ended up doing the matrix
>> multiplication of a & b manually as above but this doesn't scale very
>> nicely if a & b become larger in size.
>>
>> Cheers,
>>
>> Jonno.
>>
>> --
>> "If a theory can't produce hypotheses, can't be tested, can't be
>> disproven, and can't make predictions, then it's not a theory and
>> certainly not science." by spisska  on Slashdot, Monday April 21, 2008
>> _______________________________________________
>> Numpy-discussion mailing list
>> Numpy-discussion@scipy.org
>> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>
>
> --
> "Whereof one cannot speak, thereof one must be silent." -- Ludwig
> Wittgenstein
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>

--
"If a theory can't produce hypotheses, can't be tested, can't be
disproven, and can't make predictions, then it's not a theory and
certainly not science." by spisska on Slashdot, Monday April 21, 2008
```