Search code examples
numpymatrixdiagonal

Diagonalize 2d matrix along one axis in numpy


Given the matrix X in dimension of MxN. I want to create a diagonal matrix for every row of X. The result should be in MxNxN. How to do it efficiently? Thank you!


Solution

  • out = np.zeros((m, n, n))
    out[:, np.arange(n), np.arange(n)] = X