Spec-Zone.ru › NumPy 1.21

numpy.dot

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

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

  • Если оба a и b являются одномерными массивами, это скалярное произведение векторов (без комплексного сопряжения).
  • Если оба a и b являются двумерными массивами, это матричное произведение, но использование matmul или a @ b предпочтительнее.
  • Если один из a или b является нульмерным (скалярным), это эквивалентно multiply, и использование numpy.multiply(a, b) или a * b предпочтительнее.
  • Если a является N-мерным массивом, а b — одномерным массивом, это сумма произведений по последней оси a и b.
  • Если a является N-мерным массивом, а b — M-мерным массивом (где M>=2), это сумма произведений по последней оси a и предпоследней оси b:

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

Первый аргумент.

barray_like

Второй аргумент.

outndarray, optional

Аргумент вывода. Он должен иметь точно такой же тип, как и возвращаемый результат, если он не используется. В частности, он должен иметь правильный тип, быть непрерывным по C и иметь тип данных, который был бы возвращён для dot(a,b). Это функция производительности. Поэтому, если эти условия не выполнены, возбуждается исключение, вместо попытки быть гибкими.

Returns
outputndarray

Возвращает скалярное или матричное произведение a и b. Если a и b являются скалярами или одномерными массивами, то возвращается скаляр; в противном случае возвращается массив. Если задан out, то возвращается он.

Raises
ValueError

Если последняя размерность a не совпадает с предпоследней размерностью b.

См. также

vdot

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

tensordot

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

einsum

Конвенция Эйнштейна для суммирования.

matmul

Оператор ‘@’ как метод с параметром out.

linalg.multi_dot

Цепочечное скалярное произведение.

Примеры

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

Ни один из аргументов не комплексно сопрягается:

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

Для двумерных массивов это матричное произведение:

>>> 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

© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.dot.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API