Quindi negli array numpy c'è la funzione incorporata per ottenere gli indici diagonali, ma non riesco a capire come ottenere la diagonale partendo dall'alto in alto invece che in alto a sinistra .ottenere la diagonale opposta di un array numpy
Questo è il codice normale per ottenere partendo dall'alto a sinistra:
>>> import numpy as np
>>> array = np.arange(25).reshape(5,5)
>>> diagonal = np.diag_indices(5)
>>> array
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> array[diagonal]
array([ 0, 6, 12, 18, 24])
così che cosa devo usare se voglio che ritorni:
array([ 4, 8, 12, 16, 20])
Hai iniziato la cosa tempi, ecco il mio miglior colpo a fare in fretta: 'step = len (array) - 1; np.take (array, np.arange (step, array.size, step)) ' – Jaime
@Jaime: È fantastico, molto più veloce della mia soluzione. Forse abbiamo bisogno 'np.arange (step, array.size-1, step)' comunque? Si prega di postarlo come soluzione in modo da poter votare. – unutbu
Ho lo Zen di Python di Tim Peters appeso al muro del mio cubo, appena fuori dal mio monitor. Non posso pubblicare il codice del commento come risposta mentre ** i conteggi di leggibilità ** mi stanno guardando ...: P La tua soluzione con 'fliplr' è probabilmente la migliore: abbastanza veloce e molto, molto più comprensibile quando la rivedi un paio di mesi dopo averlo scritto. – Jaime