这部分内容已经过时,因为np已经有取上三角矩阵和下三角矩阵的方法triu)
上三角和下三角矩阵
numpy中没有很方便的取上三角矩阵或下三角矩阵的方法
import numpy as np
def triu_ones(m, n, k=0):
output = np.zeros((m, n))
for i in range(k, max(m, n)):
output += np.eye(m, n, i)
return output
def tril_ones(m, n, k=0):
output = np.zeros((m, n))
for i in range(k, -max(m, n), -1):
output += np.eye(m, n, i)
return output
def triu_like(matrix, k=0):
m, n = matrix.shape
return triu_ones(m, n, k)
def tril_like(matrix, k=0):
m, n = matrix.shape
return tril_ones(m, n, k)
def triu(matrix, k=0):
return matrix * triu_like(matrix=matrix, k=k)
def tril(matrix, k=0):
return matrix * tril_like(matrix=matrix, k=k)
if __name__ == '__main__':
print(triu_ones(5, 10, 1))
print(triu_ones(10, 5, -1))
print(tril_ones(5, 10, 1))
print(tril_ones(10, 5, -1))