• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kompresja listy wielowymiarowej do jednej

0 głosów
346 wizyt
pytanie zadane 8 września 2019 w Python przez razor1379 Początkujący (250 p.)

Witam, czy jest jakiś sposób aby listę wielowymiarową (lista1) skompresować do jednej (lista2)? Program robi screena pulpitu i konwertuje go do tablicy wielowymiarowej. Poniżej zamieszczam o co mi dokładnie chodzi. Dla uproszczenia lista tutaj ma 5x3 pikseli, normalnie będzie miała kilkadziesiąt razy więcej. Zależy mi na wysokiej wydajności, bo program będzie wykonywał operacje kilkadziesiąt razy na sekundę. Bardzo dziękuję za wszelką pomoc.

#jest tak:
lista=[
[ 91,  74,  74,  72,  71]
 [202, 200, 200, 201, 201]
 [214, 214, 214, 214, 214]
]
##a ma być tak:
lista=[91,  74,  74,  72,  71, 202, 200, 200, 201, 201, 214, 214, 214, 214, 214]
# kolejność liczb nie ma znaczenia

###--------- CAŁY KOD WYGLĄDA TAK:------###
    size = 5,3
    im1 = pyautogui.screenshot(region=(000, 71, 256, 204)) #Printscreen pulpitu
    im1 = Image.Image.convert(im1, 'L') #konwersja do 8 bitów (czarno biały)
    im1.thumbnail(size)# zmniejszenie rozdzielczości
    lista = array(im1)
###-------------------------------------###
pf = []
for i in range(len(lista)):
    pf.append(lista[i])
#powyższa pętla printuje takie coś:
#[array([91, 74, 74, 72, 71], dtype=uint8), array([202, 200, 200, 201, 201],dtype=uint8), array([214, 214, 214, 214, 214], dtype=uint8)]

 

 

2 odpowiedzi

+1 głos
odpowiedź 8 września 2019 przez adrian17 Mentor (354,800 p.)
wybrane 8 września 2019 przez razor1379
 
Najlepsza
lista = array(im1)

To jest numpy'owy array?

Bo ma metodę nazwaną dosłownie flatten(). :)

https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flatten.html

komentarz 8 września 2019 przez razor1379 Początkujący (250 p.)
Dziękuję o to chodziło! Wiem że pytanie śmieszne, ale znowu bym zmarnował całą niedzielę, dla mnie to matrix.
+1 głos
odpowiedź 8 września 2019 przez RafalS VIP (122,820 p.)
Google "python flatten list".

Masa opisanych sposobów wraz z benchmarkami:

https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists

Podobne pytania

0 głosów
1 odpowiedź 733 wizyt
pytanie zadane 2 grudnia 2022 w Python przez dedek2 Początkujący (370 p.)
+1 głos
1 odpowiedź 199 wizyt
pytanie zadane 4 października 2022 w Python przez kacper1445 Mądrala (5,070 p.)
0 głosów
1 odpowiedź 718 wizyt

93,604 zapytań

142,527 odpowiedzi

322,991 komentarzy

63,089 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...