通过(x,y)
获取矩阵中元素列表的Python方法是什么?
例如,给定类似矩阵的矩阵:
[1 2 3 4 5]
[6 7 8 9 10]
[11 12 13 14 15]
[16 17 18 19 20]
[21 22 23 24 25]
还有一个点,例如(1,3)
(代表元素9
),如何以Python方式获取对角线中穿过9
的元素?基本上,[3,9,15]
和[5,9,13,17,21]
都是。
[抱歉,我正在学习Python,因此是一个问题。谢谢!
8
投票
投票
使用np.diagonal
并带有少量偏移逻辑。
np.diagonal
索引import numpy as np lst = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]]) i, j = 1, 3 major = np.diagonal(lst, offset=(j - i)) print(major) array([ 3, 9, 15]) minor = np.diagonal(np.rot90(lst), offset=-lst.shape[1] + (j + i) + 1) print(minor) array([ 5, 9, 13, 17, 21])
和i
是行和列。通过指定偏移量,j
知道从哪里开始选择对角线元素。
对于主要对角线,您想从第一行的numpy
开始收集。因此,您需要获取当前列索引并减去当前行索引,以找出0 th行的正确列索引。同样,对于次对角线,将阵列翻转(旋转90度)并重复该过程。