在python中获取方阵的上三角形或下三角形的所有元素

2024-03-11

numpy/scipy 中是否有一个函数可以返回方阵的一个三角形(上或下)的所有元素?

e.g.:

matrix = [[1,  2,  3],
          [4,  5,  6],
          [7,  8,  9]]

三角形(上、下):

up = [1,2,3,5,6,9]
down = [1,4,5,7,8,9]

or

up = [1,2,5,3,6,9]
down = [1,4,7,5,8,9]

谢谢你!

EDIT:

是的,有两个函数可以帮助您做到这一点:np.triu_indices(n)(对于上三角形)和np.tril_indices(n)(对于下三角形)。

谢谢卡特里拉克斯!


元素的顺序重要吗?

通常矩阵的上三角和下三角是关于other对角线(从左上到右下)。要解决这个问题,您需要在两条对角线之间“翻转”,您可以使用np.fliplr(matrix)。这将为您提供正确的元素,但按照“自然”顺序(逐行,每行越来越短)。您还可以通过翻转另一种方式来获取逐列顺序(np.flipud)。但我不知道有什么方法可以得到您正在使用的“按较小对角线读取”顺序,除非一次读取一个对角线矩阵。

要获取对角线元素,您可以使用它们来获取它们的索引np.triu_indices(或者,对于下三角形,np.tril_indices),然后按它们索引。

>>> matrix
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> np.fliplr(matrix)[np.triu_indices(3)]
array([3, 2, 1, 5, 4, 7])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在python中获取方阵的上三角形或下三角形的所有元素 的相关文章

随机推荐