Spec-Zone.ru › NumPy 1.18

numpy.dot

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

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

  • Если оба a и b являются одномерными массивами, это внутреннее произведение векторов (без комплексного сопряжения).
  • Если оба a и b являются двумерными массивами, это матричное произведение, но использование matmul или a @ b предпочтительнее.
  • Если один из a или b равен 0-мерному (скаляру), это эквивалентно 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.

See also

vdot

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

tensordot

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

einsum

Обозначение суммирования Эйнштейна.

matmul

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

Примеры

>>> 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.dot.html

Spec-Zone.ru

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