为了账号安全,请及时绑定邮箱和手机立即绑定

在numpy中获取矩阵的对角线并排除一个元素

在numpy中获取矩阵的对角线并排除一个元素

繁花如伊 2021-09-14 16:21:43
我正在尝试获取矩阵的对角元素,不包括一个对角元素。如果我想全对角线元素,我知道我可以简单地做A.numpy.diagonal()在那里A是一个numpy的方阵,以获得对角线元素的全阵列。但我不想要A[i][i]一些i。所以显然我可以i从A.numpy.diagonal(). 但我认为这比使用切片慢?如何在这个问题上使用切片来获取除 处的组件之外的所有对角元素A[i][i]?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

您可以实现与diagonal仅使用arangefor 行和列相同的行为。在建立索引之前删除您不感兴趣的索引(正如@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])


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 479 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信