# scipy.sparse.csgraph.construct_dist_matrix

scipy.sparse.csgraph.construct_dist_matrix(graph, predecessors, directed=True, null_value=np.inf)

  Construct distance matrix from a predecessor matrix

  New in version 0.11.0.

  Parameters:
    graph array_like or sparse

      The N x N matrix representation of a directed or undirected graph. If dense, then non-edges are indicated by zeros or infinities.

    predecessors array_like

      The N x N matrix of predecessors of each node (see Notes below).

    directed bool, optional

      If True (default), then operate on a directed graph: only move from point i to point j along paths csgraph[i, j]. If False, then operate on an undirected graph: the algorithm can progress from point i to j along csgraph[i, j] or csgraph[j, i].

    null_value bool, optional

      value to use for distances between unconnected nodes. Default is np.inf

  Returns:
    dist_matrix ndarray

      The N x N matrix of distances between nodes along the path specified by the predecessor matrix. If no path exists, the distance is zero.

  Notes

  The predecessor matrix is of the form returned by `shortest_path`. Row i of the predecessor matrix contains information on the shortest paths from point i: each entry predecessors[i, j] gives the index of the previous node in the path from point i to point j. If no path exists between point i and j, then predecessors[i, j] = -9999

  Examples

      >>> import numpy as np
      >>> from scipy.sparse import csr_matrix
      >>> from scipy.sparse.csgraph import construct_dist_matrix

      >>> graph = [
      ... [0, 1, 2, 0],
      ... [0, 0, 0, 1],
      ... [0, 0, 0, 3],
      ... [0, 0, 0, 0]
      ... ]
      >>> graph = csr_matrix(graph)
      >>> print(graph)
        (0, 1)    1
        (0, 2)    2
        (1, 3)    1
        (2, 3)    3

      >>> pred = np.array([[-9999, 0, 0, 2],
      ...                  [1, -9999, 0, 1],
      ...                  [2, 0, -9999, 2],
      ...                  [1, 3, 3, -9999]], dtype=np.int32)

      >>> construct_dist_matrix(graph=graph, predecessors=pred, directed=False)
      array([[0., 1., 2., 5.],
             [1., 0., 3., 1.],
             [2., 3., 0., 3.],
             [2., 1., 3., 0.]])