How can I use numpy to create a diagonal matrix from a 1d array?

15,998

Solution 1

Use numpy's diag function:

numpy.diag(i)

From the documentation:

Extract a diagonal or construct a diagonal array.

Solution 2

How can I get numpy to express the i matrix as a diagonal matrix like so: [[12.22151125, 0, 0, 0],[0,4.92815942, 0, 0],[0,0,2.06380839,0 ],[0,0,0,0.29766152]]

You should use numpy.diagflat(flatted_input, k=0), to Create a two-dimensional array with the flattened input as a diagonal

example

In [1]: flatted_input = [12, 4, 2, 1]

In [2]: np.diagflat(flatted_input)

Out [2]: array([[12, 0, 0, 0],
                [0, 4, 0, 0],
                [0, 0, 2, 0],
                [0, 0, 0, 1]])
Share:
15,998
theGuy05
Author by

theGuy05

delete me

Updated on June 11, 2022

Comments

  • theGuy05
    theGuy05 almost 2 years

    I am using Python with numpy to do linear algebra.

    I performed numpy SVD on a matrix to get the matrices U,i, and V. However the i matrix is expressed as a 1x4 matrix with 1 row. i.e.: [ 12.22151125 4.92815942 2.06380839 0.29766152].

    How can I get numpy to express the i matrix as a diagonal matrix like so: [[12.22151125, 0, 0, 0],[0,4.92815942, 0, 0],[0,0,2.06380839,0 ],[0,0,0,0.29766152]]

    Code I am using:

    A = np.matrix([[3, 4, 3, 1],[1,3,2,6],[2,4,1,5],[3,3,5,2]])
    
    U, i, V = np.linalg.svd(A,full_matrices=True)
    

    So I want i to be a full diagonal matrix. How an I do this?

  • theGuy05
    theGuy05 over 6 years
    huh it's that easy!
  • Alex bGoode
    Alex bGoode over 6 years
    Yes, I find myself using diag surprisingly often.