
2007/10/16, Timothy Hochberg <tim.hochberg@ieee.org>:
You might try tensordot. Without thinking it through too much: numpy.tensordot(a0, a1, axes=[-1,-1]) seems to do what you want.
Thank you. However, it works only for this simple example, where a0 and a1 are similar. The tensor product increase the rank of the output, doesn't it ? Although the dot product decrease the rank. Is there a ¨proper" solution if a and b are general (3,N) vectors ? By example : In [16]: a = random.random_sample((3,5)) In [17]: b = random.random_sample((3,5)) what I'm searching for is : In [18]: dotprod2(a,b) Out[18]: array([ 0.28354876, 0.54474092, 0.22986942, 0.42822669, 0.98179793]) where I defined a "classical" (in the way I understand it. I may not understand it properly ?) dot product between these 2 vectors. def dotprod2(a,b): return sum(a*b,axis=0) or in maths notation : c_j = \sum_i a_{ij} b_{ij} Thank in advance, JH