Умножението на матрица е операция, която произвежда една матрица, като се вземат две матрици като вход и се умножат редовете на първата матрица в колоната на втората матрица. Имайте предвид, че трябва да гарантираме, че броят на редовете в първата матрица трябва да бъде равен на броя на колоните във втората матрица.
В Python процесът на умножение на матрици с помощта на NumPy е известен като векторизация . Основната цел на векторизацията е да премахне или намали за бримки които използвахме изрично. Чрез намаляване на циклите „for“ от програмите дава по-бързо изчисление. Вграденият пакет NumPy се използва за манипулиране и обработка на масиви.
Това са три метода, чрез които можем да извършим умножение на numpy матрица.
- Първото е използването на функцията multiply(), която извършва поелементно умножение на матрицата.
- Второто е използването на функцията matmul(), която изпълнява матричното произведение на два масива.
- Последно е използването на функцията 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]]]])