如何获取numpy对角线下的值的总和?

时间:2019-06-04 15:02:32

标签: python python-3.x numpy numpy-ndarray

给出一个二维矩形numpy数组:

a = np.array([
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
])

我想取左下角到右上角线对角下的所有值的总和。 896

完成此任务的最佳方法是什么?

该方法也应适用于大型数组。

3 个答案:

答案 0 :(得分:2)

您可以使用np.flip + np.tril + np.sum

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print(np.sum(np.tril(np.flip(a, 1), -1)))
# 23

答案 1 :(得分:1)

您可以旋转,将上三角相加,然后减去对角线。

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
result = np.triu(np.rot90(a)).sum() - np.trace(a)
#Output: 23

答案 2 :(得分:0)

您可以使用scipy.spatial.distance.squareform选择感兴趣的三角形:

from scipy.spatial.distance import squareform
squareform(a[::-1], checks=False)
# array([8, 9, 6])
squareform(a[::-1], checks=False).sum()
# 23