Załóżmy, że mam matrycę składającą się z listy list tak:Sub matryca wykazu list (bez 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]]
Załóżmy również, że mam numpy matrycę tej samej struktury o nazwie LoLa
:
>>> LoLa=np.array(LoL)
Korzystanie numpy, mogę dostać podmatrycę tej macierzy tak:
>>> LoLa[1:4,2:5]
array([[2, 3, 4],
[2, 3, 4],
[2, 3, 4]])
mogę replic zjadł kawałek numpy matrycy w czystym Pythonie tak:
>>> 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]]
który nie jest najłatwiejszą rzeczą na świecie czytać ani najskuteczniejszy :-)
Pytanie: Czy istnieje prostszy sposób (w czystej Python), aby wyciąć dowolną macierz jako pod-macierz?
Druga część * całkowicie * ukradła moją odpowiedź! :-)) +1 – dawg
Pozdrawiam, @drewk; następny jest cały twój :) – unutbu