使用 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])
在我的 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])