首页 > 解决方案 > 遍历Python中的上三角矩阵

问题描述

我正在使用 Python 并且我有一个 XxY 矩阵,其中 X=Y 并且我想以特定方式迭代上三角矩阵,以便它开始在此处输入图像描述并继续在此处输入图像描述等等在此处输入图像描述等等,直到最后一行和最后一列。因此,我尝试创建一个双循环,逐列循环,在该循环中,我创建了另一个循环,循环遍历行,总是添加一行。但是,我陷入了定义如何为第二个循环中的每一列添加下一行的问题。这是我到目前为止得到的(为简单起见,我刚刚创建了一个零数组):

import pandas as pd
import numpy as np

# number of columns
X = 10
# number or rows
Y = X

U = np.zeros((Y,X))

for j in range(X):
    for z in range():

我最初的想法是创建一个 Yx1 数组y = np.asarray(list(range(0,Y)))并将其用于第二个循环,但我不明白如何实现它。有人能帮帮我吗?是否有更简单的方法来定义这样的迭代?

标签: python

解决方案


使用 Numpy,您可以使用以下方法获取上三角矩阵的triu_indices_from索引并索引到数组中:

import numpy as np

a = np.arange(16).reshape([4, 4])
print(a)
#[[ 0  1  2  3]
# [ 4  5  6  7]
# [ 8  9 10 11]
# [12 13 14 15]]

indices = np.triu_indices_from(a)

upper = a[indices]
print(upper)
# [ 0  1  2  3  5  6  7 10 11 15]

推荐阅读