def get_inverse_transform(self, im_ref, mode='affine'): aff_im_self = self.im_file.affine aff_im_ref = im_ref.im_file.affine if mode == 'affine': transform = np.matmul(np.linalg.inv(aff_im_ref), aff_im_self) else: T_self, R_self, Sc_self, Sh_self = affines.decompose44(aff_im_self) T_ref, R_ref, Sc_ref, Sh_ref = affines.decompose44(aff_im_ref) if mode == 'translation': T_transform = T_self - T_ref R_transform = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) Sc_transform = np.array([1.0, 1.0, 1.0]) transform = affines.compose(T_transform, R_transform, Sc_transform) elif mode == 'rigid': T_transform = T_self - T_ref R_transform = np.matmul(np.linalg.inv(R_ref), R_self) Sc_transform = np.array([1.0, 1.0, 1.0]) transform = affines.compose(T_transform, R_transform, Sc_transform) elif mode == 'rigid_scaling': T_transform = T_self - T_ref R_transform = np.matmul(np.linalg.inv(R_ref), R_self) Sc_transform = Sc_self / Sc_ref transform = affines.compose(T_transform, R_transform, Sc_transform) else: transform = np.array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) return transform Tính nghịch đảo (nhân) của ma trận Show
Cho một ma trận vuông a, trả về ma trận ainv thỏa mãn >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])7Thông số . a (…, M, M) array_like Ma trận được đảo ngược Trả về . ainv (…, M, M) ndarray hoặc ma trận(Nhân) nghịch đảo của ma trận a Tăng . Lỗi LinAlgNếu a không vuông hoặc nghịch đảo không thành công Xem thêm Chức năng tương tự trong SciPy ghi chú Mới trong phiên bản 1. 8. 0 Áp dụng quy tắc phát sóng, xem tài liệu để biết chi tiết ví dụ >>> from numpy.linalg import inv >>> a = np.array([[1., 2.], [3., 4.]]) >>> ainv = inv(a) >>> np.allclose(np.dot(a, ainv), np.eye(2)) True >>> np.allclose(np.dot(ainv, a), np.eye(2)) True Nếu a là một đối tượng ma trận, thì giá trị trả về cũng là một ma trận >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]]) Nghịch đảo của một số ma trận có thể được tính toán cùng một lúc >>> a = np.array([[[1., 2.], [3., 4.]], [[1, 3], [3, 5]]]) >>> inv(a) array([[[-2. , 1. ], [ 1.5 , -0.5 ]], [[-1.25, 0.75], [ 0.75, -0.25]]]) Ma trận là một mảng hai chiều với mọi phần tử có cùng kích thước. Chúng ta có thể biểu diễn ma trận bằng cách sử dụng mảng >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])8 hoặc danh sách lồng nhau Đối với một ma trận không đơn điệu có định thức khác 0, tồn tại một ma trận duy nhất tạo ra một ma trận đơn vị khi nhân với ma trận ban đầu. Ma trận duy nhất này được gọi là ma trận nghịch đảo của ma trận ban đầu Hướng dẫn này sẽ trình bày cách nghịch đảo ma trận trong Python bằng một số phương pháp Sử dụng hàm >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]]) 9 để tìm nghịch đảo của ma trận trong PythonMô-đun >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])8 có các chức năng khác nhau để tạo và thao tác với mảng trong Python. Mô hình con 1 thực hiện các thuật toán và hàm đại số tuyến tính khác nhauChúng ta có thể sử dụng hàm >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])9 từ mô-đun này để tính toán nghịch đảo của một ma trận đã cho. Hàm này phát sinh lỗi nếu không thể nghịch đảo ma trận, điều này có thể là do ma trận là số ít Do đó, nên sử dụng chức năng này trong khối 3 và 4. Nếu ma trận là số ít, một lỗi sẽ xuất hiện và mã trong khối 4 sẽ được thực thiĐoạn mã ________số 8 đầu ra
Sử dụng Lớp [[-1.25 0.75] [ 2. -1. ]] 6 để tìm nghịch đảo của ma trận trong PythonTrong một thời gian dài, lớp 6 được dùng để biểu diễn ma trận trong Python. Điều này giống như sử dụng mảng hai chiều thông thường để biểu diễn ma trậnMột đối tượng 6 có thuộc tính 9 đã tính nghịch đảo của ma trận đã cho. Nó cũng gây ra lỗi nếu một ma trận số ít được sử dụngĐoạn mã >>> from numpy.linalg import inv >>> a = np.array([[1., 2.], [3., 4.]]) >>> ainv = inv(a) >>> np.allclose(np.dot(a, ainv), np.eye(2)) True >>> np.allclose(np.dot(ainv, a), np.eye(2)) True4 đầu ra
Mặc dù cả hai phương thức đều hoạt động giống nhau bên trong, nhưng việc sử dụng lớp 6 không được khuyến khích. Điều này là do nó không được dùng nữa và không rõ ràng khi làm việc với mảng >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])8 Sử dụng hàm >>> from numpy.linalg import inv >>> a = np.array([[1., 2.], [3., 4.]]) >>> ainv = inv(a) >>> np.allclose(np.dot(a, ainv), np.eye(2)) True >>> np.allclose(np.dot(ainv, a), np.eye(2)) True 42 để tìm nghịch đảo của ma trận trong PythonChúng ta có thể sử dụng mô-đun >>> from numpy.linalg import inv >>> a = np.array([[1., 2.], [3., 4.]]) >>> ainv = inv(a) >>> np.allclose(np.dot(a, ainv), np.eye(2)) True >>> np.allclose(np.dot(ainv, a), np.eye(2)) True43 để thực hiện các tính toán khoa học khác nhau bằng các chức năng của nó. Nó cũng hoạt động tốt với mảng >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])8 >>> from numpy.linalg import inv >>> a = np.array([[1., 2.], [3., 4.]]) >>> ainv = inv(a) >>> np.allclose(np.dot(a, ainv), np.eye(2)) True >>> np.allclose(np.dot(ainv, a), np.eye(2)) True42 cũng có thể trả về nghịch đảo của một ma trận vuông đã cho trong Python. Nó hoạt động giống như hàm >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])9 Đoạn mã >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])0 đầu ra
Tạo hàm do người dùng xác định để tìm nghịch đảo của ma trận trong PythonChúng ta có thể triển khai logic toán học để tính toán ma trận nghịch đảo trong Python. Đối với điều này, chúng tôi sẽ sử dụng một loạt các hàm do người dùng xác định Chúng ta sẽ tạo các hàm khác nhau để trả về định thức, hoán vị và định thức ma trận. Các hàm này sẽ được sử dụng trong một hàm sẽ trả về giá trị nghịch đảo cuối cùng Phương thức này hoạt động khi chúng ta biểu diễn một ma trận dưới dạng danh sách các danh sách trong Python Đoạn mã >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])2 đầu ra >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])3 Ví dụ trên trả về một danh sách lồng nhau đại diện cho ma trận nghịch đảo đã cho Để kết thúc, chúng ta đã thảo luận về một số phương pháp để tìm ma trận nghịch đảo trong Python. Mô-đun >>> ainv = inv(np.matrix(a)) >>> ainv matrix([[-2. , 1. ], [ 1.5, -0.5]])8 và >>> from numpy.linalg import inv >>> a = np.array([[1., 2.], [3., 4.]]) >>> ainv = inv(a) >>> np.allclose(np.dot(a, ainv), np.eye(2)) True >>> np.allclose(np.dot(ainv, a), np.eye(2)) True43 có hàm >>> from numpy.linalg import inv >>> a = np.array([[1., 2.], [3., 4.]]) >>> ainv = inv(a) >>> np.allclose(np.dot(a, ainv), np.eye(2)) True >>> np.allclose(np.dot(ainv, a), np.eye(2)) True49 tính toán nghịch đảo của ma trận Chúng ta cũng có thể sử dụng lớp 6 để tìm ma trận nghịch đảo. Cuối cùng, chúng ta đã thảo luận về một loạt các hàm do người dùng định nghĩa tính toán nghịch đảo bằng cách triển khai logic số học
Có chức năng nghịch đảo trong Python không?đảo ngược() bằng Python. cục mịch. Hàm invert() được sử dụng để tính toán đảo ngược bit của một phần tử mảng.
Công thức của một nghịch đảo là gì?Công thức. Nghịch đảo của ma trận
. 𝐴 = 1 ( 𝐴 ) ( 𝐴 ) , d e t a d j where a d j ( 𝐴 ) is the adjoint of 𝐴 and d e t ( 𝐴 ) is the determinant of 𝐴 .
lối tắt của nghịch đảo là gì?Để đảo ngược lựa chọn hiện có mà không cần chạm vào chuột, chỉ cần nhấn Ctrl+Shift+i trên PC hoặc Command+Shift+i trên máy Mac.
Inv có nghĩa là gì trong Python?hàm inv() trong Python được sử dụng để tính toán nghịch đảo (nhân) của một ma trận . Ma trận nghịch đảo là ma trận mà khi nhân với ma trận ban đầu sẽ tạo ra một ma trận đơn vị. |