在通过(x,y)
的矩阵中获取元素列表的Pythonic方法是什么?
例如,给定像:
这样的矩阵[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
)如何以Pythonic方式获取穿过9
的对角线中的元素?基本上,[3,9,15]
和[5,9,13,17,21]
都是。
抱歉,我只是学习Python,因此问题。谢谢!
答案 0 :(得分:5)
使用带有一点偏移逻辑的np.diagonal
。
weight
索引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°)并重复该过程。