我想知道如何獲得相對于矩陣的特定索引向下(左和右)的對角線。
為了更加圖形化,我將給出以下預期輸出示例:
matrix = np.array([[2, 0, 0, 2],
[3, 9, 8, 3],
[3, 0, 0, 2],
[0, 0, 0, 0]])
職位的預期輸出結果: matrix[1][2]
matrix[1][2]
8
diag_right = [2]
diag_left = [0, 0]
同樣的例子,但使用矩陣 [1][2] 中的矩陣
matrix = np.array([[x, x, x, x],
[x, x, 8, x],
[x, 0, x, 2],
[0, x, x, x]])
uj5u.com熱心網友回復:
使用 numpy 的一種簡單方法是:(我更改了矩陣以使 test_ij 中的某些結果更清晰)
import numpy as np
def get_right_left_diags(matrix,i,j):
n = len(matrix)
left_diag = np.diag(matrix[i 1:n,j 1:n])
right_diag = np.diag( matrix[i 1:n, j-1::-1])
return right_diag,left_diag
%lets check some results
matrix = np.array([[2, 0, 0, 2],
[3, 9, 8, 3],
[3, 0, 0, 2],
[1, 2, 3, 4]])
n = len(matrix)
cases = [[0,0],[0,3],[1,1],[1,2],[2,1]]
for i,j in cases:
right_diag,left_diag = get_right_left_diags(matrix,i,j)
print(f"i={i}, j={j}, left_diag: {left_diag} \t right_diag: {right_diag}")
這將輸出:
#i=0, j=0, left_diag: [9 0 4] right_diag: [3 0 2]
#i=0, j=3, left_diag: [] right_diag: [8 0 1]
#i=1, j=1, left_diag: [0 4] right_diag: [3]
#i=1, j=2, left_diag: [2] right_diag: [0 1]
#i=2, j=1, left_diag: [3] right_diag: [1]
對我來說它完全有意義。
uj5u.com熱心網友回復:
matrix = np.array([[2, 0, 0, 2],
[3, 9, 8, 3],
[3, 0, 0, 2],
[0, 0, 0, 0]])
i = 1; j = 2
diag_right = []; diag_left = []
for k in range(1, len(matrix) - i):
if(j k < len(matrix[0])):
diag_right.append(matrix[i k][j k])
if(j-k >= 0):
diag_left.append(matrix[i k][j-k])
這是你要找的嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354032.html
