Matriz numpy 1D que é deslocada para a direita para cada linha consecutiva em uma nova matriz 2D

Estou tentando otimizar algum código removendo loops e usando matrizes numpy somente enquanto trabalho com grandes conjuntos de dados.

Gostaria de pegar uma matriz numpy 1D, por exemplo:

a = [1, 2, 3, 4, 5]

e produza uma matriz numpy 2D em que o valor em cada coluna muda ao longo de um local, por exemplo, no caso acima, para um desejo de ter uma função que retorne:

[[1 2 3 4 5]
 [0 1 2 3 4]
 [0 0 1 2 3]
 [0 0 0 1 2]
 [0 0 0 0 1]]

Encontrei exemplos que usam a função strides para fazer algo semelhante a produzir, por exemplo:

[[1 2 3]
 [2 3 4]
 [3 4 5]]

No entanto, estou tentando mudar cada uma das minhas colunas na outra direção. Como alternativa, pode-se ver o problema colocando o primeiro elemento de a na primeira diagonal, o segundo elemento na segunda diagonal e assim por diante. No entanto, gostaria de enfatizar novamente como gostaria de evitar o uso de um loop for, while ou if inteiramente. Qualquer ajuda seria muito apreciada.

questionAnswers(2)

yourAnswerToTheQuestion