Nhân ma trận python

>>> a = np. cái[[9, 5, 7, 4]] >>> c = np. cái[[9, 5, 4, 3]] >>> np. dấu chấm [a, c]. hình dạng [9, 5, 7, 9, 5, 3] >>> np. matmul[a, c]. shape [9, 5, 7, 3] >>> # n là 7, k là 4, m là 3

Hàng đầu tiên có thể được chọn là X[0]. Và, phần tử ở hàng đầu tiên, cột đầu tiên có thể được chọn là X[0][0]

Phép nhân hai ma trận X và Y chỉ được xác định nếu số cột trong X bằng số hàng Y

Nếu X là ma trận n x m và Y là ma trận m x l thì XY được xác định và có thứ nguyên là n x l [nhưng YX không được xác định]. Dưới đây là một số cách để triển khai phép nhân ma trận trong Python

Mã nguồn. Phép nhân ma trận bằng vòng lặp lồng nhau

# Program to multiply two matrices using nested loops

# 3x3 matrix
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
# 3x4 matrix
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# result is 3x4
result = [[0,0,0,0],
         [0,0,0,0],
         [0,0,0,0]]

# iterate through rows of X
for i in range[len[X]]:
   # iterate through columns of Y
   for j in range[len[Y[0]]]:
       # iterate through rows of Y
       for k in range[len[Y]]:
           result[i][j] += X[i][k] * Y[k][j]

for r in result:
   print[r]

đầu ra

[114, 160, 60, 27]
[74, 97, 73, 14]
[119, 157, 112, 23]

Trong chương trình này, chúng tôi đã sử dụng vòng lặp

[114, 160, 60, 27]
[74, 97, 73, 14]
[119, 157, 112, 23]
0 lồng nhau để lặp qua từng hàng và từng cột. Chúng tôi tích lũy tổng sản phẩm trong kết quả

Kỹ thuật này đơn giản nhưng tốn kém về mặt tính toán khi chúng ta tăng bậc của ma trận

Đối với các hoạt động ma trận lớn hơn, chúng tôi khuyên dùng các gói phần mềm được tối ưu hóa như NumPy, nhanh hơn vài lần [theo thứ tự 1000] lần so với mã trên

Mã nguồn. Phép nhân ma trận bằng cách sử dụng danh sách lồng nhau

# Program to multiply two matrices using list comprehension

# 3x3 matrix
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]

# 3x4 matrix
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]

# result is 3x4
result = [[sum[a*b for a,b in zip[X_row,Y_col]] for Y_col in zip[*Y]] for X_row in X]

for r in result:
   print[r]

Đầu ra của chương trình này giống như trên. Để hiểu đoạn mã trên, trước tiên chúng ta phải biết về hàm tích hợp sẵn

[114, 160, 60, 27]
[74, 97, 73, 14]
[119, 157, 112, 23]
1 và giải nén danh sách đối số bằng toán tử *

Chúng tôi đã sử dụng khả năng hiểu danh sách lồng nhau để lặp qua từng phần tử trong ma trận. Lúc đầu, mã có vẻ phức tạp và không thể đọc được. Nhưng một khi bạn hiểu rõ về danh sách, có thể bạn sẽ không quay lại các vòng lặp lồng nhau

Home> python> allow kernel ma trận trong Python bằng cách sử dụng đầu vào của người dùng > Python > Matrix multiplication in Python using user input

Nội dung chính Hiển thị

  • Use the loops loops [cho / while]
  • Nhập Row0Value
  • Sử dụng chức năng tổng hợp danh sách và zip[]
  • Làm thế nào để bạn thực hiện phép nhân ma trận trong Python?
  • Làm thế nào để bạn nhân hai yếu tố ma trận không ngoan trong Python?
  • Làm thế nào để bạn nhân hai ma trận trong một vòng lặp trong Python?
  • Làm thế nào để bạn nhập và nhân vào python?

Trong bài đăng này, chúng ta sẽ thấy cách lấy đầu vào ma trận từ người dùng và thực hiện cấp phép nhân ma trận trong Python

Please see the first ví dụ. Ví dụ.
Ví dụ.

Đầu vào. matrix1=[[1,2],  . ma trận1 = [[1,2],

                    [2,3]][2,3]]

& nbsp; matrix2=[[1,2],

                    [2,3]][2,3]]

Đầu ra. [5,8]. [5,8]

  [8,13]

Bây giờ, hãy để Lừa xem các cách khác nhau để thực hiện nhiệm vụ này

Use the loops loops [cho / while]

Trong phương pháp này, chúng tôi phải lặp qua từng hàng và từng cột mà tại sao chúng tôi sử dụng các vòng lặp xen kẽ ở đây. Dưới đây là mã Python được cung cấp.
Dưới đây là mã Python được cung cấp.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

in ["Nhập thứ tự của ma trận 1. "]["Nhập thứ tự của ma trận thứ nhất. "]

# Get the headers in a integer in a line

m,n=list[map[int,input[]. split[]]],n = danh sách[map[int,input[].tách[]]]

In ["Nhập các giá trị không ngoan hàng"]["Nhập các giá trị khôn ngoan"]

# Danh sách trống cho trận 1

mat1=[] = []

# Chèn hàng không ngoan vào ma trận

foriinrange[m]. itrongphạm vi[m . ]:

  . "]in["Nhập hàng",i,"value:"]

& nbsp; # take 1d- integer array input in one line

    row=list[map[int,input[]. split[]]]hàng = danh sách[map[int,input[].tách[]]]

    mat1. nối thêm[hàng]mat1. chắp thêm[hàng]

in ["Nhập thứ tự của trận thứ 2. "]["Nhập thứ tự của ma trận thứ 2. "]

# Get the headers in a integer in a line

p,q=list[map[int,input[]. split[]]],q = danh sách[map[int,input[].tách[]]]

In ["Nhập các giá trị không ngoan hàng"]["Nhập các giá trị khôn ngoan"]

# Danh sách trống cho trận 1

mat2=[] = []

# Chèn hàng không ngoan vào ma trận

forjinrange[p]. jtrongphạm vi[p . ]:

  . "]in["Nhập hàng",j,"value:"]

& nbsp; # take 1d- integer array input in one line

    row=list[map[int,input[]. split[]]]hàng = danh sách[map[int,input[].tách[]]]

    mat2. nối thêm[hàng]mat2. chắp thêm[hàng]

in ["Nhập thứ tự của ma trận thứ 2. "]

# Danh sách trống cho ma trận thứ 2["Ma trận 1. ",mat1]

& nbsp; . "]["Ma trận 2. ",mat2]

# Show ma trận thứ 1 và 2

resultant=[] = []

in ["Ma trận 1. ", MAT1]

foriinrange[m]. itrong phạm vi[m . ]:

    row=[]row = []

Chủ Đề