Умножение массивов python numpy

numpy.matmul#

A location into which the result is stored. If provided, it must have a shape that matches the signature (n,k),(k,m)->(n,m). If not provided or None, a freshly-allocated array is returned.

For other keyword-only arguments, see the ufunc docs .

New in version 1.16: Now handles ufunc kwargs

The matrix product of the inputs. This is a scalar only when both x1, x2 are 1-d vectors.

If the last dimension of x1 is not the same size as the second-to-last dimension of x2.

If a scalar value is passed in.

Complex-conjugating dot product.

Sum products over arbitrary axes.

Einstein summation convention.

alternative matrix product with different broadcasting rules.

The behavior depends on the arguments in the following way.

  • If both arguments are 2-D they are multiplied like conventional matrices.
  • If either argument is N-D, N > 2, it is treated as a stack of matrices residing in the last two indexes and broadcast accordingly.
  • If the first argument is 1-D, it is promoted to a matrix by prepending a 1 to its dimensions. After matrix multiplication the prepended 1 is removed.
  • If the second argument is 1-D, it is promoted to a matrix by appending a 1 to its dimensions. After matrix multiplication the appended 1 is removed.

matmul differs from dot in two important ways:

  • Multiplication by scalars is not allowed, use * instead.
  • Stacks of matrices are broadcast together as if the matrices were elements, respecting the signature (n,k),(k,m)->(n,m) :
>>> a = np.ones([9, 5, 7, 4]) >>> c = np.ones([9, 5, 4, 3]) >>> np.dot(a, c).shape (9, 5, 7, 9, 5, 3) >>> np.matmul(a, c).shape (9, 5, 7, 3) >>> # n is 7, k is 4, m is 3 

The matmul function implements the semantics of the @ operator introduced in Python 3.5 following PEP 465.

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

For 2-D arrays it is the matrix product:

>>> a = np.array([[1, 0], . [0, 1]]) >>> b = np.array([[4, 1], . [2, 2]]) >>> np.matmul(a, b) array([[4, 1], [2, 2]]) 

For 2-D mixed with 1-D, the result is the usual.

>>> a = np.array([[1, 0], . [0, 1]]) >>> b = np.array([1, 2]) >>> np.matmul(a, b) array([1, 2]) >>> np.matmul(b, a) array([1, 2]) 

Broadcasting is conventional for stacks of arrays

>>> a = np.arange(2 * 2 * 4).reshape((2, 2, 4)) >>> b = np.arange(2 * 2 * 4).reshape((2, 4, 2)) >>> np.matmul(a,b).shape (2, 2, 2) >>> np.matmul(a, b)[0, 1, 1] 98 >>> sum(a[0, 1, :] * b[0 , :, 1]) 98 

Vector, vector returns the scalar inner product, but neither argument is complex-conjugated:

Scalar multiplication raises an error.

>>> np.matmul([1,2], 3) Traceback (most recent call last): . ValueError: matmul: Input operand 1 does not have enough dimensions . 

The @ operator can be used as a shorthand for np.matmul on ndarrays.

>>> x1 = np.array([2j, 3j]) >>> x2 = np.array([2j, 3j]) >>> x1 @ x2 (-13+0j) 

Источник

numpy.multiply#

Input arrays to be multiplied. If x1.shape != x2.shape , they must be broadcastable to a common shape (which becomes the shape of the output).

out ndarray, None, or tuple of ndarray and None, optional

A location into which the result is stored. If provided, it must have a shape that the inputs broadcast to. If not provided or None, a freshly-allocated array is returned. A tuple (possible only as a keyword argument) must have length equal to the number of outputs.

where array_like, optional

This condition is broadcast over the input. At locations where the condition is True, the out array will be set to the ufunc result. Elsewhere, the out array will retain its original value. Note that if an uninitialized out array is created via the default out=None , locations within it where the condition is False will remain uninitialized.

For other keyword-only arguments, see the ufunc docs .

Returns : y ndarray

The product of x1 and x2, element-wise. This is a scalar if both x1 and x2 are scalars.

Equivalent to x1 * x2 in terms of array broadcasting.

>>> x1 = np.arange(9.0).reshape((3, 3)) >>> x2 = np.arange(3.0) >>> np.multiply(x1, x2) array([[ 0., 1., 4.], [ 0., 4., 10.], [ 0., 7., 16.]]) 

The * operator can be used as a shorthand for np.multiply on ndarrays.

>>> x1 = np.arange(9.0).reshape((3, 3)) >>> x2 = np.arange(3.0) >>> x1 * x2 array([[ 0., 1., 4.], [ 0., 4., 10.], [ 0., 7., 16.]]) 

Источник

Умножение матриц NumPy: начните за 5 минут

bestprogrammer.ru

Умножение матриц NumPy

Без рубрики

NumPy — популярная библиотека Python, которая предлагает ряд мощных математических функций. Библиотека широко используется в количественных областях, таких как наука о данных, машинное обучение и глубокое обучение. Мы можем использовать NumPy для выполнения сложных математических вычислений, таких как умножение матриц.

Умножение матриц может помочь нам быстро приблизиться к очень сложным вычислениям. Он может помочь нам в теории сетей, линейных системах уравнений, моделировании населения и многом другом. В этом руководстве мы рассмотрим некоторые основные вычисления с умножением матриц NumPy.

Что такое NumPy?

NumPy — это библиотека Python с открытым исходным кодом, которую мы можем использовать для выполнения высокоуровневых математических операций с массивами, матрицами, линейной алгеброй, анализом Фурье и т. Д. Библиотека NumPy очень популярна в научных вычислениях, науках о данных и машинном обучении. NumPy совместим с популярными библиотеками данных, такими как pandas, matplotlib и Scikit-learn. Это намного быстрее, чем списки Python, потому что он объединяет более быстрые коды, такие как C и C ++, в Python. Он также разбивает наши задачи на несколько частей и обрабатывает каждую часть одновременно.

Установка и импорт NumPy

Прежде чем мы начнем, убедитесь, что у нас установлен NumPy. Если у вас уже есть Python, вы можете установить NumPy с помощью одной из следующих команд:

Источник

Читайте также:  Python requests disable ssl verify
Оцените статью