2024-10-02 12:32:29 发布
网友
在numpy/scipy中是否有一个函数可以返回一个方阵中某个三角形(上或下)的所有元素?在
例如:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
三角形(上下):
或者
up = [1,2,5,3,6,9] down = [1,4,7,5,8,9]
谢谢你!在
编辑:
是的,有两个函数可以帮助您做到这一点:np.triu_indices(n)(用于上三角)和{}(用于下三角)。在
np.triu_indices(n)
谢谢Katrielex!在
以下代码提取包含对角线的下三角:
hstack(mat[i][:i+1] for i in xrange(mat.shape[0]))
这将提取不带对角线的下三角:
元素的顺序重要吗?在
通常情况下,矩阵的上、下三角取对角线(从左上到右下)。要解决这个问题,您需要在两条对角线之间“翻转”,这可以通过np.fliplr(matrix)来实现。这将得到正确的元素,但以“自然”的顺序(一行一行,每一行变短)。您也可以通过相反的方式来获得一列一列的顺序(np.flipud)。但是我不知道有什么方法可以得到你所使用的“按较小对角线读取”的顺序,除了一次读取一个对角线的矩阵。在
np.fliplr(matrix)
np.flipud
为了得到对角线元素,你可以用np.triu_indices(或者,对于下三角,np.tril_indices)得到它们的索引,然后用它们来索引。在
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])
以下代码提取包含对角线的下三角:
这将提取不带对角线的下三角:
^{pr2}$元素的顺序重要吗?在
通常情况下,矩阵的上、下三角取对角线(从左上到右下)。要解决这个问题,您需要在两条对角线之间“翻转”,这可以通过
np.fliplr(matrix)
来实现。这将得到正确的元素,但以“自然”的顺序(一行一行,每一行变短)。您也可以通过相反的方式来获得一列一列的顺序(np.flipud
)。但是我不知道有什么方法可以得到你所使用的“按较小对角线读取”的顺序,除了一次读取一个对角线的矩阵。在为了得到对角线元素,你可以用
np.triu_indices
(或者,对于下三角,np.tril_indices
)得到它们的索引,然后用它们来索引。在相关问题 更多 >
编程相关推荐