Python 访问Numpy矩阵的下三角?

Python 访问Numpy矩阵的下三角?,python,numpy,Python,Numpy,好的,基本上假设我有一个矩阵: matrix([[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]) 使用numpy矩阵时,是否可以轻松获得对角线下方的区域?我环顾四周,什么也没找到。我可以做标准的循环方式,但是这不会使numpy提供的性能失效吗 我正在计算将模型输出结果和实际结果进行比较的统计数据。我目前得到的数

好的,基本上假设我有一个矩阵:

matrix([[0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4]])
使用numpy矩阵时,是否可以轻松获得对角线下方的区域?我环顾四周,什么也没找到。我可以做标准的循环方式,但是这不会使numpy提供的性能失效吗

我正在计算将模型输出结果和实际结果进行比较的统计数据。我目前得到的数据,得出了大约10000 x 10000的矩阵。我主要是想把这些元素加起来


有没有一种简单的方法可以做到这一点?

您可以使用
tril
triu
。请看这里:

我自己也在寻找一个方便的函数,但这必须要做。。。不确定这会变得容易多了。但如果有,我很想听听。每次你避开一个for循环,一个天使就会得到它的翅膀

-啊

快速注意:这避免了对角线。。。如果你想要它,并且你的矩阵是对称的,只需省略求逆(元素不是)。否则,您需要在其中进行转置

def tri_flat(array):
    R = array.shape[0]
    mask = np.asarray(np.invert(np.tri(R,R,dtype=bool)),dtype=float)
    x,y = mask.nonzero()
    return array[x,y]