Interdisziplinärer Einsatz von IPython Notebooks Eine Einführung in Python S. Schöneberg 2014-12-16 Why did it have to be snakes? Schöneberg Python • interpretierte Sprache (d.h. braucht Interpreter zum ausführen) X Plattformunabhängig X Häuge Probleme einfach lösbar (X) X Schwierige Probleme ezient lösbar Existierender, externer Code einfach einzubinden Python mit vielen Modulen vorkonguriert gibt's hier: http://continuum.io/downloads Schöneberg iPython notebooks notebooks interaktive Python-Umgebung im Browser bietet Syntax highlighting, autocompletion erlaubt relativ einfaches Speichern einer Python Sitzung gut geignet für prototyping oder Lehre/Lernen Schöneberg Variablentypen Elementare Variablentypen ∗5=0 ≈ 2−300 − 2300 int Ganzzahl Division ohne Rest, z.B. 1/5 oat Gleitkommazahl Wertebereich maschinenabhängig string Zeichenfolge Duck typing Variablen werden danach unterschieden, was sie tun oder können, nicht welchen Typ sie haben Schöneberg Module Python ist modular Modulname Inhalt numpy Arrays, Lineare Algebra scipy Integration, Interpolation, Optimisation matplotlib Plotten Schöneberg Sequences Sequences Sequences sind Sammlungen von Variablen, mit unterschiedlicher Syntax und Eigenschaften, alle erlauben es über die items (Elemente) zu iterieren Sequences tuple statische Einträge list veränderliche Einträge numpy.array alle Einträge vom selben Typ, Rechenoperationen (insb. * und **) elementweise Schöneberg Kontrollstrukturen for-Schleifen In Python nur for-each-Schleifen, iterieren über jedes item einer sequence und führen für dieses item die Befehle im Schleifenkörper aus. if-Abfragen Führt den folgenden code Block nur aus, wenn die Bedingung erfüllt ist. Caveat: Vergleiche wie z.B. sequences nicht eindeutig. Schöneberg ≤ sind für arrays und andere Funktionen I Zuordnungsvorschrift x → f (x ) Funktionen in Python prinzipiell ähnlich Schöneberg Funktionen II Schöneberg Numerische Integration in Python Zur Erinnerung: Riemann bzw. Darboux-Integral Schöneberg Numerische Integration in Python 1 Diskrete Stützstellen über das Intervall verteilen 2 Funktion zwischen den Stützstellen approximieren 3 Fläche in jedem Teilstück berechnen 4 Schöneberg Aufsummieren Uneigentliche Integrale Was tun mit Integralen mit Grenze Z ∞ f (x )dx 1 Z b a gilt nur wenn ab > 0 f (x )dx = und lim ∞? x →∞ Z 1/a 1/b 1 t2 f f (x ) x 2 = 0 Schöneberg 1 t dt Output für Fortgeschrittene Schöneberg Programmierstil Style Guide https://www.Python.org/dev/peps/pep-0008 Guter Stil macht das Leben leicher! Sprechende Funktions- und Variablennamen, z.B. plotDistribution(energy, counts) statt doStu(a, b) Einheitliche Schreibweise, wenn CamelCase dann überall, oder lower_case_with_underscores, aber nicht mischen Kommentare helfen, z.B. für Einheiten Schöneberg Literaturempfehlungen nr.com Python.org scipy.org http://matplotlib.org/ http://stackoverow.com/ Schöneberg Weitere Module Modulname Inhalt numpy Arrays, Lineare Algebra scipy Integration, Interpolation, Optimisation matplotlib Plots scikit-learn Machine Learning decimal Flieÿkommazahlen mit gröÿerem Wertebereich und (fast) beliebiger Präzision sympy Symbolische Operationen à la Mathematica Pandas Tabellen, Statistik h5py HDF5-Daten Zugri PyROOT ROOT Zugri PyFITS Zugri für FITS Dateien (Standardformat in der Astronomie) Schöneberg