.. meta::
:description: Vor- und Nachbearbeitung eines zweitägigen Python
Trainings
:keywords: schulung, training, programming, python
Python (12.11.2019 - 14.11.2019 in Graz)
========================================
.. toctree::
:hidden:
:maxdepth: 1
code/BigPlan.ipynb
code/LiveHacking.ipynb
.. sidebar:: Inhalt
.. contents::
:local:
.. sidebar:: Material
:doc:`/trainings/material/soup/python/basics/group`
Eine Einführung in Python und `NumPy `__, zur
Beantwortung der Frage, "Ist die Herrschaft von MATLAB
absolut?". Gestellt von einer Firma aus dem Raum Graz, gehalten in den
Schulungsräumen von `tecTrain (Graz)
`__,
über die der Kurs gebucht wurde. Platzhirsche sind schwer zu schlagen,
haben wir herausgefunden, aber Python ist auf einem sehr guten
Weg. Spass hatten wir allemal.
*"Die Schulung war unglaublich lustig und hat mir einen sehr guten
Überblick über Python vermittelt, ich habe gelernt wie ich es auf
für mich relevante Probleme anwende und was es dabei zu beachten
gilt.*
*Zudem war der Kursleiter sehr sympathisch und kompetent. Ich
würde es also jederzeit weiterempfehlen bzw. wiederholen."*
Danke Christoph, sowas nettes hat noch nie jemand zu mir gesagt!
Standardthemen
--------------
Die Datentypen, und das "Normale" an Python waren schnell erklärt. Ich
kanns nicht lassen, bevor die Anfängerthemen vorbei sind, auf dem
Besten von Python herumzureiten: Iteration und Generatoren. Hier hatte
ich eine kleine Demo gehackt - zum x-ten mal. Das ganze Fibonacci-Zeug
gibts jetzt als :doc:`Live-Hacking-Screenplay
`
Das Hauptthema: Numerik, NumPy
------------------------------
Siehe dazu auch :doc:`ein Jupyter Notebook "BigPlan" `
(:download:`download `).
Der Chef hat mir bei einem Vorgespräch ein Übungsbeispiel für die
Teilnehmer mitgegeben: ausgehend von einem Spektralbild (sagt man
so?), verwende den `K-Means Clusteringalgorithmus
`__, um die Bereiche
auf dem Bild zu kategorisieren (die abgebildeten Stücke zu erkennen).
Ich hab mir erlaubt, für die Kursvorbereitung
[#ich_nix_bildverarbeitung]_ so quasi als Appetizer das Problem etwas
zu reduzieren: Farbreduktion eines Bildes (auf 8 Farben). Das Programm
(siehe unten) verwendet
* `Pillow `__, um
Bilddaten zu lesen und schreiben. Die Library interoperiert nahtlos
mit `NumPy `__, was sicher kein Zufall ist.
* `NumPy `__, um die Alpha-Plane des
Ausgangsbildes abzuschneiden und zu restoren.
* `Den K-Means Algorithmus aus scikit-learn
`__,
um das Clustering jemand anders machen zu lassen.
.. figure:: code/veggie.png
Ausgangsbild ``veggie.png``: viele Farben
.. figure:: code/veggie-reduced.png
Reduziertes Bild ``veggie-reduced.png``: Acht Farben
Das Programm ist überschaubar - es verwendet nur Libraries und macht
nichts selbst (das ist der Plan, immer, beim Programmieren). Die
Ausdrucksstärke von Python macht sich hier bemerkbar durch z.B. die
Slice-Syntax (wegschneiden der Alpha-Plane), oder beim Iterieren
mittels ``enumerate()``.
.. literalinclude:: code/color-reduce.py
:caption: :download:`code/color-reduce.py`
:language: python
Lesen von ``.mat`` Files
------------------------
Das Spektralbild liegt im ``.mat`` Format vor - was immer das ist, hat
wahrscheinlich mit MATLAB zu tun. Etwas Recherche hat ergeben, dass
die `Funktion
`__
``scipy.io.loadmat()`` das kann. Hier ein kleines Testprogramm,
.. literalinclude:: code/mat.py
:caption: :download:`code/mat.py`
:language: python
Lösen einer Uni-Übung
---------------------
Eine Teilzeitmitarbeiterin der Firma, sie studiert Physik neben der
Arbeit, muss für eine Übung ... was weiss ich ... machen. Wie auch
immer, der Input für ihre Arbeit liegt in folgendem bekackten
Inputformat vor, das es zu parsen gilt. War eine nette
Zwischendurch-Gruppenarbeit.
.. literalinclude:: code/franziska/H2O.dat.txt
:caption: :download:`code/franziska/H2O.dat.txt`
Der Code, mit dem wir nach einigen Runden Nachdenkens einigermaßen
zufrieden waren, sieht so aus,
.. literalinclude:: code/franziska/dat.py
:language: python
:caption: :download:`code/franziska/dat.py`
.. rubric:: Footnotes
.. [#ich_nix_bildverarbeitung] Ich hatte von Bildverarbeitung keine
Ahnung