使用 Python Numpy 和数组索引循环检索矩阵对角线下的元素

Cycle to retrieve elements under the matrix diagonal using Python Numpy with array indexing

在我的 Pyhton 代码中,变量 i 我表示矩阵的行 A
在每一步中,我都想检索对角线当前元素 A[i,i] 之前的所有元素。

这是我通过 array indexing 使用的代码:

import numpy as np 

A = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])

n = 3;

for i in range (n):
  print(A[i,0:i-1])

我根据自己的推理编写了这段代码:

i=0) A[0, 0:-1] = doesn't exists a column -1 so this retrieves   []
i=1) A[1, 0:1-1] = A[1,0:0] → A[1,0] = 4                         [4]
i=2) A[2, 0:2-1] = A[2,0:1] → A[2,0] = 7 and A[2,1] = 8          [7 8]

所以我期望的输出是:

[]
[4]
[7 8]

相反,我获得了以下不需要的输出:

[1 2]
[]
[7]

请你告诉我,错误在哪里?我怎样才能得到正确的结果?非常感谢!

问题出在您确定的索引中。

print(A[i,0:i-1])

当您在 Python 中标识结束索引时,您标识的值将被排除。所以 0:3 会产生索引 0、1 和 2。您不需要添加的 -1。此外,在 Python 中,索引 -1 表示从末尾开始。所以在你的代码中,当 i = 0 时,你得到 0:-1,这意味着从 0 到最后一个索引(排除)。

将打印更改为:

print(A[i,0:i])