numpy.dot#

numpy.dot(a,b,out=None)#

Dot product of two arrays. Specifically,

  • If botha andb are 1-D arrays, it is inner product of vectors(without complex conjugation).

  • If botha andb are 2-D arrays, it is matrix multiplication,but usingmatmul ora@b is preferred.

  • If eithera orb is 0-D (scalar), it is equivalent tomultiply and usingnumpy.multiply(a,b) ora*b ispreferred.

  • Ifa is an N-D array andb is a 1-D array, it is a sum product overthe last axis ofa andb.

  • Ifa is an N-D array andb is an M-D array (whereM>=2), it is asum product over the last axis ofa and the second-to-last axis ofb:

    dot(a,b)[i,j,k,m]=sum(a[i,j,:]*b[k,:,m])

It uses an optimized BLAS library when possible (seenumpy.linalg).

Parameters:
aarray_like

First argument.

barray_like

Second argument.

outndarray, optional

Output argument. This must have the exact kind that would be returnedif it was not used. In particular, it must have the right type, must beC-contiguous, and its dtype must be the dtype that would be returnedfordot(a,b). This is a performance feature. Therefore, if theseconditions are not met, an exception is raised, instead of attemptingto be flexible.

Returns:
outputndarray

Returns the dot product ofa andb. Ifa andb are bothscalars or both 1-D arrays then a scalar is returned; otherwisean array is returned.Ifout is given, then it is returned.

Raises:
ValueError

If the last dimension ofa is not the same size asthe second-to-last dimension ofb.

See also

vdot

Complex-conjugating dot product.

vecdot

Vector dot product of two arrays.

tensordot

Sum products over arbitrary axes.

einsum

Einstein summation convention.

matmul

‘@’ operator as method with out parameter.

linalg.multi_dot

Chained dot product.

Examples

>>>importnumpyasnp>>>np.dot(3,4)12

Neither argument is complex-conjugated:

>>>np.dot([2j,3j],[2j,3j])(-13+0j)

For 2-D arrays it is the matrix product:

>>>a=[[1,0],[0,1]]>>>b=[[4,1],[2,2]]>>>np.dot(a,b)array([[4, 1],       [2, 2]])
>>>a=np.arange(3*4*5*6).reshape((3,4,5,6))>>>b=np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))>>>np.dot(a,b)[2,3,2,1,2,2]499128>>>sum(a[2,3,2,:]*b[1,2,:,2])499128
On this page