使用 numpy.tril 提取上方对角线上的列表元素

我想用numpy.tril在上面对角线上提取嵌套列表的元素。根据我的理解,设置参数k>0,它会返回上面的对角线。但是,我的代码没有返回预期的结果。


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

>>> array([[1, 2, 0],

       [4, 5, 6],

       [7, 8, 9]])

预期输出:


array([1,2,3],

[4,5,0],

[7,0,0,])


桃花长相依
浏览 233回答 3
3回答

小唯快跑啊

您可以翻转数组,获取上三角形,然后将其翻转回来:In [1]: import numpy as npIn [2]: a = np.array([[1,2,3],[4,5,6],[7,8,9]])In [3]: np.triu(a[:, ::-1])[:, ::-1]Out[3]:array([[1, 2, 3],       [4, 5, 0],       [7, 0, 0]])

烙印99

两个问题。首先,np.tril(如其名称所示)给出了下对角线。其次,三角形阵列通常是您所需输出的镜像。我们可以在偷看源代码为np.triu适应其新triu_anti通过的功能np.fliplr:def triu_anti(m, k=0):    m = np.asanyarray(m)    mask = np.fliplr(np.tri(*m.shape[-2:], k=k-1, dtype=bool))    return np.where(mask, np.zeros(1, m.dtype), m)res = triu_anti([[1,2,3],[4,5,6],[7,8,9]])print(res)# array([[1, 2, 3],#        [4, 5, 0],#        [7, 0, 0]])

凤凰求蛊

使用T两次np.tril(a.T,0).Tarray([[1, 2, 3],       [0, 5, 6],       [0, 0, 9]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java