我正在尝试获取矩阵的对角元素,不包括一个对角元素。如果我想全对角线元素,我知道我可以简单地做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])
添加回答
举报
0/150
提交
取消