nlcpy.dot
- nlcpy.dot(a, b, out=None)[source]
Computes a dot product of two arrays.
If both a and b are 1-D arrays, it is inner product of vectors (without complex conjugation).
If both a and b are 2-D arrays, it is matrix multiplication, but using
nlcpy.matmul()
ora @ b
is preferred.If either a or b is 0-D (scalar), it is equivalent to multiply and using
nlcpy.multiply(a,b)
ora * b
is preferred.If a is an N-D array and b is a 1-D array, it is a sum product over the last axis of a and b.
If a is an N-D array and b is an M-D array (where
M>=2
), it is a sum product over the last axis of a and the second-to-last axis of b:dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
- Parameters
- aarray_like
Input arrays or scalars.
- barray_like
Input arrays or scalars.
- outndarray, optional
Output argument. This must have the exact kind that would be returned if it was not used. In particular, out.dtype must be the dtype that would be returned for dot(a,b).
- Returns
- outputndarray
Returns the dot product of a and b. If a and b are both scalars or both 1-D arrays then this function returns the result as a 0-dimention array.
Examples
>>> import nlcpy as vp >>> vp.dot(3, 4) array(12)
Neither argument is complex-conjugated:
>>> vp.dot([2j, 3j], [2j, 3j]) array(-13.+0.j)
For 2-D arrays it is the matrix product:
>>> a = [[1, 0], [0, 1]] >>> b = [[4, 1], [2, 2]] >>> vp.dot(a,b) array([[4, 1], [2, 2]])
>>> a = vp.arange(3*4*5*6).reshape((3, 4, 5, 6)) >>> b = vp.arange(3*4*5*6)[::-1].reshape((5, 4, 6, 3)) >>> vp.dot(a, b)[2, 3, 2, 1, 2, 2] array(499128) >>> sum(a[2, 3, 2, :] * b[1, 2, :, 2]) array(499128)