logo

NumPy умножение на матрици в Python

Умножението на матрица е операция, която произвежда една матрица, като се вземат две матрици като вход и се умножат редовете на първата матрица в колоната на втората матрица. Имайте предвид, че трябва да гарантираме, че броят на редовете в първата матрица трябва да бъде равен на броя на колоните във втората матрица.

NumPy умножение на матрици в Python

В Python процесът на умножение на матрици с помощта на NumPy е известен като векторизация . Основната цел на векторизацията е да премахне или намали за бримки които използвахме изрично. Чрез намаляване на циклите „for“ от програмите дава по-бързо изчисление. Вграденият пакет NumPy се използва за манипулиране и обработка на масиви.

Това са три метода, чрез които можем да извършим умножение на numpy матрица.

  1. Първото е използването на функцията multiply(), която извършва поелементно умножение на матрицата.
  2. Второто е използването на функцията matmul(), която изпълнява матричното произведение на два масива.
  3. Последно е използването на функцията dot(), която извършва точково произведение на два масива.

Пример 1: Поелементно умножение на матрица

 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.multiply(array1,array2) result 

В горния код

  • Импортирахме numpy с псевдоним np.
  • Създадохме масив1 и масив2, използвайки функцията numpy.array() с измерение 3.
  • Създадохме променлив резултат и присвоихме върнатата стойност на функцията np.multiply().
  • Предадохме както масива array1, така и array2 в np.multiply().
  • Накрая се опитахме да отпечатаме стойността на резултата.

В резултата е показана триизмерна матрица, чиито елементи са резултат от поелементното умножение както на елементите array1, така и на array2.

Изход:

 array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]]) 

Пример 2: Матричен продукт

 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.matmul(array1,array2) result 

Изход:

 array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]]) 

В горния код

  • Импортирахме numpy с псевдоним np.
  • Създадохме array1 и array2 с помощта на функцията numpy.array() с измерение 3.
  • Създадохме променлив резултат и присвоихме върнатата стойност на функцията np.matmul().
  • Предадохме както масива array1, така и array2 в np.matmul().
  • Накрая се опитахме да отпечатаме стойността на резултата.

В резултата е показана триизмерна матрица, чиито елементи са произведение както на елементи array1, така и на array2.

Пример 3: Точков продукт

Това са следните спецификации за numpy.dot:

  • Когато и a, и b са 1-D (едномерни) масиви-> Вътрешен продукт на два вектора (без комплексно конюгиране)
  • Когато и a, и b са 2-D (двуизмерни) масиви -> Матрично умножение
  • Когато a или b е 0-D (известен също като скалар) -> Умножете с помощта на numpy.multiply(a, b) или a * b.
  • Когато a е N-D масив и b е 1-D масив -> Сумиране на произведението върху последната ос на a и b.
  • Когато a е N-D масив и b е M-D масив, при условие че M>=2 -> Сумиране на произведението върху последната ос на a и предпоследната ос на b:
    Също така, dot(a, b)[i,j,k,m] = сума(a[i,j,:] * b[k,:,m])
 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.dot(array1,array2) result 

В горния код

  • Импортирахме numpy с псевдоним np.
  • Създадохме array1 и array2 с помощта на функцията numpy.array() с измерение 3.
  • Създадохме променлив резултат и присвоихме върнатата стойност на функцията np.dot().
  • Предадохме както масива array1, така и array2 в np.dot().
  • Накрая се опитахме да отпечатаме стойността на резултата.

В резултата е показана триизмерна матрица, чиито елементи са точково произведение както на елементите array1, така и на array2.

Изход:

 array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])