def triangular_to_square(grid, triangle):
"""Convert a packed triangular matrix to a square matrix.
Args:
grid: A 3 x K array as returned by make_complete_graph().
triangle: A length-K array.
Returns:
A square symmetric V x V array with zero on the diagonal.
"""
K = len(triangle)
assert grid.shape == (3, K)
V = int(round(0.5 + (0.25 + 2 * K)**0.5))
assert K == V * (V - 1) // 2
square = np.zeros([V, V], dtype=triangle.dtype)
square[grid[1, :], grid[2, :]] = triangle
square[grid[2, :], grid[1, :]] = triangle
return square
评论列表
文章目录