gpt4 book ai didi

python - 获取numpy中矩阵的对角线并排除元素

转载 作者:行者123 更新时间:2023-12-01 01:22:00 24 4
gpt4 key购买 nike

我正在尝试获取矩阵的对角元素,不包括一个对角元素。如果我想要完整的对角线元素,我知道我可以简单地执行 A.numpy.diagonal() ,其中 A 是一个 numpy 方阵来获取对角线元素的完整数组。但我不想要 A[i][i] 来表示某些 i。显然我可以从 A.numpy.diagonal() 的输出中删除与 i 对应的元素。但我认为这比使用切片慢?如何在这个问题上使用切片来获取除 A[i][i] 处的分量之外的所有对角线元素?

最佳答案

只需对行和列使用 arange 即可实现与 diagonal 相同的行为。在建立索引之前删除您不感兴趣的索引(正如 @hpaulj 在评论中指出的那样,实际上,找到对角线并在之后删除索引会更快):

<小时/>

设置

a = np.arange(25).reshape(5,5)
i = 3 # exclude the diagonal element at index 3

array([[ 0,  1,  2,  3,  4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
<小时/>
d = np.arange(a.shape[0])
m = np.delete(d, i)

a[m, m]

array([ 0,  6, 12, 24])

关于python - 获取numpy中矩阵的对角线并排除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53730187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com