# numpy.diag

numpy.diag(v, k=0)

  Extract a diagonal or construct a diagonal array.

  See the more detailed documentation for `numpy.diagonal` if you use this function to extract a diagonal and wish to write to the resulting array; whether it returns a copy or a view depends on what version of numpy you are using.

  Parameters:
    v array_like

      If v is a 2-D array, return a copy of its k-th diagonal. If v is a 1-D array, return a 2-D array with v on the k-th diagonal.

    k int, optional

      Diagonal in question. The default is 0. Use k>0 for diagonals above the main diagonal, and k<0 for diagonals below the main diagonal.

  Returns:
    out ndarray

      The extracted diagonal or constructed diagonal array.

  See also

  `diagonal`

    Return specified diagonals.

  `diagflat`

    Create a 2-D array with the flattened input as a diagonal.

  `trace`

    Sum along diagonals.

  `triu`

    Upper triangle of an array.

  `tril`

    Lower triangle of an array.

  Examples

      >>> x = np.arange(9).reshape((3,3))
      >>> x
      array([[0, 1, 2],
             [3, 4, 5],
             [6, 7, 8]])

      >>> np.diag(x)
      array([0, 4, 8])
      >>> np.diag(x, k=1)
      array([1, 5])
      >>> np.diag(x, k=-1)
      array([3, 7])

      >>> np.diag(np.diag(x))
      array([[0, 0, 0],
             [0, 4, 0],
             [0, 0, 8]])