给出一个二维矩形numpy数组:
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
我想取左下角到右上角线对角下的所有值的总和。 8
,9
和6
。
完成此任务的最佳方法是什么?
该方法也应适用于大型数组。
答案 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