【问题标题】:Numpy one-liner to transform existing matrix into upper triangular matrix将现有矩阵转换为上三角矩阵的 Numpy 单线
【发布时间】:2022-11-29 16:31:47
【问题描述】:

我想采用矩阵并将其转换为上三角矩阵,不使用np.triu

def get_utrian(array: np.ndarray):
    if array.shape[0] != array.shape[1]:
        return

    for i in range(array.shape[0]):
        for j in range(array.shape[1]):
            if i > j:
                array[i, j] = 0

所以应该是

A = np.random.randint(1, 10, size=(3, 3))
print(A)

A = get_utrian(A)
print(A)

"""
[[1 3 4]
 [2 7 9]
 [5 4 7]]
[[1 3 4]
 [0 7 9]
 [0 0 7]]
"""

【问题讨论】:

  • 你的问题是什么 ??
  • return array?删除A =
  • 为什么不使用tri 功能?或复制他们的代码?我们的目标不是 numpy 中的“一个衬里”。

标签: python numpy


【解决方案1】:

那么你需要实现以下循环,尽管我认为它会非常慢。

def get_utrian(array: np.ndarray):
    if array.shape[0] != array.shape[1]:
        return

    for i in range(array.shape[0]):
        for j in range(i-1):
                array[i, j] = 0
    return array

您不需要仅在 i>j 的地方遍历整个矩阵!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2016-10-03
    • 2016-08-25
    • 1970-01-01
    • 2014-12-10
    相关资源
    最近更新 更多