Ho un array numpy bidimensionale con un numero uguale di colonne e righe. Mi piacerebbe sistemarli in un array più grande avendo i più piccoli sulla diagonale. Dovrebbe essere possibile specificare la frequenza con cui la matrice di partenza dovrebbe essere sulla diagonale. Per esempio:Creare un array numpy diagonale a blocchi da un determinato array numpy
a = numpy.array([[5, 7],
[6, 3]])
Quindi, se ho voluto questo array 2 volte sulla diagonale l'output desiderato sarebbero:
array([[5, 7, 0, 0],
[6, 3, 0, 0],
[0, 0, 5, 7],
[0, 0, 6, 3]])
Per 3 volte:
array([[5, 7, 0, 0, 0, 0],
[6, 3, 0, 0, 0, 0],
[0, 0, 5, 7, 0, 0],
[0, 0, 6, 3, 0, 0],
[0, 0, 0, 0, 5, 7],
[0, 0, 0, 0, 6, 3]])
C'è un modo veloce implementare questo con metodi numpy e per dimensioni arbitrarie dell'array di partenza (considerando ancora l'array di partenza per avere lo stesso numero di righe e colonne)?
come faresti questo se è necessario inserire x diverse matrici nel diagonale? Ho 80 diverse matrici, che devono essere trasformate in una matrice a blocchi diagonali. –
@ Will.Evo Tutte le 80 delle stesse forme? – Divakar
Sì sempre la stessa forma –