Either input can be an array of 3- (or 2-) element vectors.
>>> a=np.array([[1,0,0],[0,1,0],[0,0,1]])
>>> b=np.array([1,0,0])
>>> np.cross(a,b)
array([[ 0, 0, 0],
[ 0, 0, -1],
[ 0, 1, 0]])
The result in this case is array([np.cross(a[0],b), np.cross(a[1],b), np.cross(a[2],b)])
b
can also be an array of 3- (or 2-) element vectors, but it must have the same shape as a
. Otherwise the calculation fails with a "shape mismatch" error. So we can have
>>> b=np.array([[0,0,1],[1,0,0],[0,1,0]])
>>> np.cross(a,b)
array([[ 0, -1, 0],
[ 0, 0, -1],
[-1, 0, 0]])
and now the result is array([np.cross(a[0],b[0]), np.cross(a[1],b[1]), np.cross(a[2],b[2])])