def func1(A):
    return np.triu(A.T, 1) + A

def func2(A):
    out = A.T + A
idx = np.arange(A.shape[0])
out[idx, idx] = A[idx, idx]
return out

def func3(A):
    out = A.T + A
np.fill_diagonal(out, np.diag(A))
return out

def func4(A):
    out = A.T + A
mask = np.eye(out.shape[0], dtype=bool)
out[mask] = A[mask]
return out

def func5(A):
    return np.where(np.eye(A.shape[0], dtype=bool), A, A.T + A)

def func6(A):
    return np.where(np.triu(np.ones(A.shape[0], dtype=bool), 1), A.T, A)
Как преобразовать треугольную матрицу в квадратную в NumPy?