[Numpy-discussion] cross product of two 3xn arrays

Travis Oliphant oliphant.travis at ieee.org
Thu Feb 16 06:21:15 CST 2006


Gary Ruben wrote:

> I expect to get from this
>
> In [21]: a=array([[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]])
> In [22]: b=array([[[1],[2],[4]],[[4],[5],[7]],[[7],[8],[10]]])
>
> the solution
>
> Out[24]:
> array([[[ 2],
>         [-1],
>         [ 0]],
>
>        [[ 5],
>         [-4],
>         [ 0]],
>
>        [[ 8],
>         [-7],
>         [ 0]]])


Why do you expect to get this solution with axis=0?   Remember axis=0 
thinks the vectors are formed in the 0th dimension.  Thus a[:,0,0] and 
a[:,1,0] and a[:,2,0] are the vectors you are using.   

You appear to be thinking of the vectors in the axis=1 dimension where 
the vectors would be

a[0,:,0], a[1,:,0], a[2,:,0]

But this is specified with axis=1  (there is a single axis argument 
available now in SVN which means
axisa=axisb=axisc=axis)


Thus,

cross(a,b,axis=1)

Gives the solution I think you are after.

-Travis





More information about the Numpy-discussion mailing list