numpy.inner#

numpy.inner(a, b, /)#

Скалярное произведение двух массивов.

Обычное скалярное произведение векторов для 1-D массивов (без комплексного сопряжения), в более высоких размерностях — сумма произведений по последним осям.

Параметры:
a, barray_like

Если a и b не являются скалярами, их последние размерности должны совпадать.

Возвращает:
выходndarray

Если a и b возвращается скаляр, если оба аргумента являются скалярами или оба являются одномерными массивами; в противном случае возвращается массив. out.shape = (*a.shape[:-1], *b.shape[:-1])

Вызывает:
ValueError

Если оба a и b являются нескалярными, и их последние размерности имеют разные размеры.

Смотрите также

tensordot

Суммировать произведения по произвольным осям.

dot

Обобщенное матричное произведение, используя предпоследнее измерение b.

vecdot

Векторное скалярное произведение двух массивов.

einsum

Соглашение суммирования Эйнштейна.

Примечания

Для векторов (одномерных массивов) вычисляет обычное скалярное произведение:

np.inner(a, b) = sum(a[:]*b[:])

Более общо, если ndim(a) = r > 0 и ndim(b) = s > 0:

np.inner(a, b) = np.tensordot(a, b, axes=(-1,-1))

или явно:

np.inner(a, b)[i0,...,ir-2,j0,...,js-2]
     = sum(a[i0,...,ir-2,:]*b[j0,...,js-2,:])

Кроме того a или b могут быть скалярами, в этом случае:

np.inner(a,b) = a*b

Примеры

Обычное скалярное произведение для векторов:

>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = np.array([0,1,0])
>>> np.inner(a, b)
2

Некоторые многомерные примеры:

>>> a = np.arange(24).reshape((2,3,4))
>>> b = np.arange(4)
>>> c = np.inner(a, b)
>>> c.shape
(2, 3)
>>> c
array([[ 14,  38,  62],
       [ 86, 110, 134]])
>>> a = np.arange(2).reshape((1,1,2))
>>> b = np.arange(6).reshape((3,2))
>>> c = np.inner(a, b)
>>> c.shape
(1, 1, 3)
>>> c
array([[[1, 3, 5]]])

Пример, где b является скаляром:

>>> np.inner(np.eye(2), 7)
array([[7., 0.],
       [0., 7.]])