Supponiamo che io ho una matrice composta da una lista di liste in questo modo:Sub matrice di una lista di liste (senza NumPy)
>>> LoL=[list(range(10)) for i in range(10)]
>>> LoL
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
assumere, anche, che ho una matrice NumPy della stessa struttura chiamata LoLa
:
>>> LoLa=np.array(LoL)
Utilizzando NumPy, ho potuto ottenere una sottomatrice di questa matrice simili:
>>> LoLa[1:4,2:5]
array([[2, 3, 4],
[2, 3, 4],
[2, 3, 4]])
posso replic mangiato la fetta NumPy matrice in puro Python in questo modo:
>>> r=(1,4)
>>> s=(2,5)
>>> [LoL[i][s[0]:s[1]] for i in range(len(LoL))][r[0]:r[1]]
[[2, 3, 4], [2, 3, 4], [2, 3, 4]]
che non è la cosa più facile del mondo per leggere, né il più efficace :-)
Domanda: C'è un modo più semplice (in puro Python) per tagliare una matrice arbitraria come sottotabella?
La seconda parte * totalmente * ha rubato la mia risposta! :-)) +1 – dawg
Cheers, @drewk; il prossimo è tutto tuo :) – unutbu