Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program Python untuk mendarab dua matriks menggunakan tatasusunan berbilang dimensi

Program Python untuk mendarab dua matriks menggunakan tatasusunan berbilang dimensi

WBOY
WBOYke hadapan
2023-09-11 17:09:07668semak imbas

Program Python untuk mendarab dua matriks menggunakan tatasusunan berbilang dimensi

Matriks ialah satu set nombor yang disusun dalam baris dan lajur. Matriks dengan m baris dan n lajur dipanggil matriks m X n, dan m dan n dipanggil dimensinya. Matriks ialah tatasusunan dua dimensi yang dibuat dalam Python menggunakan senarai atau tatasusunan NumPy.

Secara amnya, pendaraban matriks boleh dilakukan dengan mendarab baris matriks pertama dengan lajur matriks kedua. Di sini, bilangan lajur matriks pertama hendaklah sama dengan bilangan baris matriks kedua.

Senario input dan output

Andaikan kita mempunyai dua matriks A dan B, dimensi kedua-dua matriks ini ialah 2X3 dan 3X2 masing-masing. Matriks yang terhasil selepas pendaraban akan mempunyai 2 baris dan 1 lajur.

              	      [b1, b2]			
[a1, a2, a3]    *     [b3, b4]		= 	[a1*b1+a2*b2+a3*a3]
[a4, a5, a6]          [b5, b6]			[a4*b2+a5*b4+a6*b6]

Selain itu, kita juga boleh melakukan pendaraban mengikut unsur bagi matriks. Dalam kes ini, kedua-dua matriks input mesti mempunyai bilangan baris dan lajur yang sama.

[a11, a12, a13]	      [b11, b12, b13]		[a11*b11, a12*b12, a13*b13]
[a21, a22, a23]   *   [b21, b22, b23]	    =	[a21*b21, a22*b22, a23*b23]
[a31, a32, a33]	      [b31, b32, b33]		[a31*b31, a32*b32, a33*b33]

Gunakan Untuk Gelung

Dengan gelung bersarang, kami akan melakukan pendaraban pada dua matriks dan menyimpan hasilnya dalam matriks ketiga.

Contoh

Dalam contoh ini, kami akan memulakan matriks hasil dengan semua sifar untuk menyimpan hasil pendaraban.

# Defining the matrix using multidimensional arrays
matrix_a = [[1,2,3],
            [4,1,2],
            [2,3,1]]
 
matrix_b = [[1,2,3,2],
            [2,3,6,3],
            [3,1,4,2]]

#function for displaying matrix
def display(matrix):
   for row in matrix:
      print(row)
   print()

# Display two input matrices
print('The first matrix is defined as:') 
display(matrix_a)
print('The second matrix is defined as:')
display(matrix_b)

# Initializing Matrix with all 0s
result = [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]]

# multiply two matrices 
for i in range(len(matrix_a)):

   # iterate through rows 
   for j in range(len(matrix_b[0])):

      # iterate through columns
      for k in range(len(matrix_b)):        
         result[i][j] = matrix_a[i][k] * matrix_b[k][j]

print('The multiplication of two matrices is:')
display(result)

Output

The first matrix is defined as:
[1, 2, 3]
[4, 1, 2]
[2, 3, 1]

The second matrix is defined as:
[1, 2, 3, 2]
[2, 3, 6, 3]
[3, 1, 4, 2]

The multiplication of two matrices is:
[9, 3, 12, 6]
[6, 2, 8, 4]
[3, 1, 4, 2]

Bilangan baris dan lajur matriks pertama (matriks_a) ialah 3, dan bilangan baris dan lajur matriks kedua (matriks_b) ialah 3. Matriks yang terhasil selepas mendarab kedua-dua matriks ini (matriks_a, matriks_b) akan mempunyai 3 baris dan 4 lajur (iaitu 3X4).

Contoh

Fungsi numpy.array() digunakan di sini untuk mencipta matriks supaya kita boleh melakukan pendaraban matriks menggunakan operator @.

import numpy as np

# Defining the matrix using numpy array
matrix_a = np.array([[1,2,5], [1,0,6], [9,8,0]])
matrix_b = np.array([[0,3,5], [4,6,9], [1,8,0]])

# Display two input matrices
print('The first matrix is defined as:') 
print(matrix_a)

print('The second matrix is defined as:')
print(matrix_b)

# multiply two matrices
result = matrix_a @ matrix_b

print('The multiplication of two matrices is:')
print(result) 

Output

The first matrix is defined as:
[[1 2 5]
 [1 0 6]
 [9 8 0]]
The second matrix is defined as:
[[0 3 5]
 [4 6 9]
 [1 8 0]]
The multiplication of two matrices is:
[[ 13  55  23]
 [  6  51   5]
 [ 32  75 117]]

Pengendali pendaraban @ tersedia daripada versi Python 3.5+, jika tidak, kita boleh menggunakan fungsi numpy.dot().

Contoh

Dalam contoh ini, kami akan melakukan pendaraban mengikut unsur bagi dua tatasusunan numpy menggunakan operator asterisk (*).

import numpy as np

# Defining the matrix using numpy array
matrix_a = np.array([[1,2,5], [1,0,6], [9,8,0]])
matrix_b = np.array([[0,3,5], [4,6,9], [1,8,0]])

# Display two input matrices
print('The first matrix is defined as:') 
print(matrix_a)

print('The second matrix is defined as:')
print(matrix_b)

# multiply elements of two matrices
result = matrix_a * matrix_b

print('The element-wise multiplication of two matrices is:')
print(result)

Output

The first matrix is defined as:
[[1 2 5]
 [1 0 6]
 [9 8 0]]
The second matrix is defined as:
[[0 3 5]
 [4 6 9]
 [1 8 0]]
The element-wise multiplication of two matrices is:
[[ 0  6 25]
 [ 4  0 54]
 [ 9 64  0]]

Atas ialah kandungan terperinci Program Python untuk mendarab dua matriks menggunakan tatasusunan berbilang dimensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam