如何提取诊断表上面的元素并将其存储在数组中

2024-10-02 22:29:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个矩阵使用:

Matrix = [[0 for x in range(5)] for z in range(5)]

我试图提取diagnol上面的元素并将其存储在一个数组中

例如:

    [0, 0, 0, 1, 1]
    [1, 0, 0, 0, 0]
    [1, 1, 0, 0, 1]
    [0, 1, 1, 0, 0]
    [0, 1, 0, 1, 0]
U=[0,0,1,1,0,0,0,0,1,0]

A=[1,4,9]
  [0,1,2]
  [2,3,6]

U=[4,9,2]

Tags: in元素forrange矩阵数组matrixdiagnol
2条回答

所以这里有一个解决方案,我改变了你的矩阵来生成任意的随机数,这样你就可以更好地看到哪些数字被考虑进去了。TRIU=Triangle Upper是一个函数,它采用给定格式的矩阵,并采用对角线上方的上三角形

#import numpy as np
from random import randrange

Matrix = [[randrange(10) for x in range(5)] for z in range(5)]

def triu(matrix):
    length = len(matrix[0])
    U = list()
    diagLine = 0

    for row in Matrix:
        length -= 1
        colCounter = 0
        for col in row:
            if colCounter > diagLine:
                U.append(col)
            colCounter += 1
        diagLine += 1

    return U



#print np.matrix(Matrix)
print triu(Matrix)

结果:

[[0 0 2 4 0]
 [6 4 8 9 0]
 [6 2 2 3 0]
 [2 9 6 5 5]
 [1 5 8 9 2]]
[0, 2, 4, 0, 8, 9, 0, 3, 0, 5]
[Finished in 0.2s]

你可以只使用列表理解

from random import randrange

Matrix = [[randrange(10) for x in range(5)] for z in range(5)]
>>>Matrix
[[6, 3, 7, 9, 3], [8, 6, 4, 0, 4], [0, 0, 1, 3, 2], [7, 7, 2, 3, 7], [3, 3, 5, 6, 3]]

[Matrix[i][j] for i in range(0,5) for j in range(i+1,5)]
[3, 7, 9, 3, 4, 0, 4, 3, 2, 7]

相关问题 更多 >