Hướng dẫn how to find diagonal elements of a matrix in python - cách tìm các phần tử đường chéo của ma trận trong python

numpy.dia chéo (a, offset = 0, axis1 = 0, axis2 = 1) [nguồn]#diagonal(a, offset=0, axis1=0, axis2=1)[source]#

Trả về các đường chéo được chỉ định.

Nếu A là 2-D, hãy trả về đường chéo của A với phần bù đã cho, tức là, việc thu thập các phần tử của Mẫu a[i, i+offset]. Nếu A có nhiều hơn hai kích thước, thì các trục được chỉ định bởi Axis1 và Axis2 được sử dụng để xác định mép con 2-D có đường chéo được trả về. Hình dạng của mảng kết quả có thể được xác định bằng cách loại bỏ trục1 và trục2 và nối một chỉ số ở bên phải bằng kích thước của các đường chéo kết quả.

Trong các phiên bản của Numpy trước 1.7, hàm này luôn trả về một mảng mới, độc lập chứa một bản sao của các giá trị trong đường chéo.

Trong Numpy 1.7 và 1.8, nó tiếp tục trả về một bản sao của đường chéo, nhưng tùy thuộc vào thực tế này không được chấp nhận. Viết cho mảng kết quả tiếp tục hoạt động như trước đây, nhưng một điều tương lai được phát hành.

Bắt đầu từ Numpy 1.9, nó trả về chế độ xem chỉ đọc trên mảng gốc. Cố gắng ghi vào mảng kết quả sẽ tạo ra lỗi.

Trong một số bản phát hành trong tương lai, nó sẽ trả về chế độ xem đọc/ghi và viết cho mảng được trả về sẽ thay đổi mảng ban đầu của bạn. Mảng trả về sẽ có cùng loại với mảng đầu vào.

Nếu bạn không viết cho mảng được trả về bởi chức năng này, thì bạn có thể bỏ qua tất cả những điều trên.

Nếu bạn phụ thuộc vào hành vi hiện tại, thì chúng tôi khuyên bạn nên sao chép mảng được trả về một cách rõ ràng, tức là, sử dụng np.diagonal(a).copy() thay vì chỉ np.diagonal(a). Điều này sẽ hoạt động với cả phiên bản quá khứ và tương lai của Numpy.

Parametersaarray_likeaarray_like

Mảng mà các đường chéo được lấy.

OffsetInt, tùy chọnint, optional

Bù của đường chéo từ đường chéo chính. Có thể tích cực hoặc tiêu cực. Mặc định là đường chéo chính (0).

Axis1int, tùy chọnint, optional

Trục được sử dụng làm trục đầu tiên của các phần phụ 2 chiều mà từ đó các đường chéo nên được thực hiện. Mặc định là trục đầu tiên (0).

Trục2int, tùy chọnint, optional

Trục được sử dụng làm trục thứ hai của các phần phụ 2 chiều mà từ đó các đường chéo nên được thực hiện. Mặc định là trục thứ hai (1).

Returnsarray_of_diagonalsndarrayarray_of_diagonalsndarray

Nếu A là 2-D, thì mảng 1-D chứa đường chéo và cùng loại với A được trả về trừ khi A là matrix, trong trường hợp đó là mảng 1-D thay vì A (2-D) matrix được trả về Để duy trì khả năng tương thích ngược.

Nếu a.ndim > 2, thì các kích thước được chỉ định bởi Axis1 và Axis2 được loại bỏ và một trục mới được chèn ở cuối tương ứng với đường chéo.

RAISEVALUEERROR

Nếu kích thước của A nhỏ hơn 2.

Xem thêm

>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> a.diagonal(0,  # Main diagonals of two arrays created by skipping
...            0,  # across the outer(left)-most axis last and
...            1)  # the "middle" (row) axis first.
array([[0, 6],
       [1, 7]])
0

MATLAB Work-A-A-Like cho các mảng 1-D và 2-D.

>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> a.diagonal(0,  # Main diagonals of two arrays created by skipping
...            0,  # across the outer(left)-most axis last and
...            1)  # the "middle" (row) axis first.
array([[0, 6],
       [1, 7]])
1

Tạo mảng đường chéo.

>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> a.diagonal(0,  # Main diagonals of two arrays created by skipping
...            0,  # across the outer(left)-most axis last and
...            1)  # the "middle" (row) axis first.
array([[0, 6],
       [1, 7]])
2

Tổng số theo các đường chéo.

Ví dụ

>>> a = np.arange(4).reshape(2,2)
>>> a
array([[0, 1],
       [2, 3]])
>>> a.diagonal()
array([0, 3])
>>> a.diagonal(1)
array([1])

Ví dụ 3-D:

>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> a.diagonal(0,  # Main diagonals of two arrays created by skipping
...            0,  # across the outer(left)-most axis last and
...            1)  # the "middle" (row) axis first.
array([[0, 6],
       [1, 7]])

Các mảng con có đường chéo chính mà chúng ta vừa có được; Lưu ý rằng mỗi tương ứng với việc sửa trục bên phải (cột) bên phải và các đường chéo được đóng gói trên các hàng.

>>> a[:,:,0]  # main diagonal is [0 6]
array([[0, 2],
       [4, 6]])
>>> a[:,:,1]  # main diagonal is [1 7]
array([[1, 3],
       [5, 7]])

Có thể thu được bằng cách chống Dia bằng cách đảo ngược thứ tự của các phần tử bằng cách sử dụng

>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> a.diagonal(0,  # Main diagonals of two arrays created by skipping
...            0,  # across the outer(left)-most axis last and
...            1)  # the "middle" (row) axis first.
array([[0, 6],
       [1, 7]])
3 hoặc
>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> a.diagonal(0,  # Main diagonals of two arrays created by skipping
...            0,  # across the outer(left)-most axis last and
...            1)  # the "middle" (row) axis first.
array([[0, 6],
       [1, 7]])
4.

>>> a = np.arange(9).reshape(3, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> np.fliplr(a).diagonal()  # Horizontal flip
array([2, 4, 6])
>>> np.flipud(a).diagonal()  # Vertical flip
array([6, 4, 2])

Lưu ý rằng thứ tự mà đường chéo được truy xuất thay đổi tùy thuộc vào hàm lật.