Commit e119e302 authored by Nils Beyer's avatar Nils Beyer
Browse files

lecture anchors updated

parent dd596ebf
......@@ -451,9 +451,8 @@ Ungleich
2 != 3
```
(logisch)=
#### Logische Verknüpfungen
<a id="logisch"></a>
- `and`: logische Konjunktion
- `or`: logische Disjunktion
- `not`: logische Negation
......
......@@ -12,8 +12,8 @@ kernelspec:
# Container
(listen)=
## Listen
<a id="listen"></a>
Listen sind geordnete Sammlungen von beliebigen Objekten.
```{code-block}
......@@ -68,8 +68,8 @@ Negative Indizes zählen von rechts:
a[-1]
```
(slicing)=
### Teil-Listen (Slices)
<a id="slicing"></a>
```{code-block}
liste[start:stop]
```
......@@ -277,8 +277,9 @@ a
`b` ist ein neuer Name für **dasselbe Objekt**, das `a` referenziert. Wird dieses z.B. über `b.append` verändert, so ändert sich auch `a`.
(tupel)=
## Tupel
<a id="tupel"></a>
```{code-block}
(a, b, c, ...)
```
......@@ -307,8 +308,8 @@ a = (10)
a
```
(multiple_assignment)=
### Multiple Assignment
<a id="multiple_assignment"></a>
*Hinweis*: Das hat Ähnlichkeit mit dem pattern matching aus der Linux-Vorlesung.
Tupel werden vor allem für *Struktur* benutzt. Über Multiple Assignment können die einzelnen Elemente eines Tupels oder einer Liste direkt mehreren Variablen zugewiesen werden.
......@@ -323,8 +324,9 @@ first
Das ist insbesondere interessant für Funktionen, die so mehr als einen Rückgabewert haben können.
(dictionaries)=
## Dictionaries (Wörterbücher)
<a id="dictionaries"></a>
```{code-block}
{key1: value1, key2: value2, ...}
```
......
......@@ -9,12 +9,12 @@ kernelspec:
name: python3
---
(funktionen)=
# Funktionen
Die meisten nicht-trivialen Programme haben Code-Teile, die mehrfach genutzt werden sollen. Es bietet sich an, diese in selbst-definierte Funktionen auszulagern. Außerdem erhöhen Funktionen mit klar definiertem Verhalten, Argumenten und Rückgabewerten die Verständlichkeit des Programms.
Funktionen werden mit dem zusammengesetzten Befehl `def` definiert:
<a id="funktionen"></a>
```{code-block}
def funktionsname(argument1, argument2, ...):
befehl1
......
......@@ -69,8 +69,8 @@ mit der *left hand side (lhs)* und der *right hand side (rhs)*. Der default der
sy.Eq(x**2, 2)
```
(sympy_gleichungen)=
## Lösen von Gleichungen
<a id="sympy_gleichungen"></a>
Die Hauptfunktion für das Lösen von Gleichungen ist `sy.solveset()`.
```{code-block}
......
......@@ -77,8 +77,8 @@ list(range(3, 13, 3))
Zusätzlich zu den in Python existierenden Iteratoren kann man auch auf flexible Weise eigene erzeugen. Die einfachste Möglichkeit dazu sind **Generatoren**.
(generatoren)=
## Generatoren
<a id="generatoren"></a>
Generatoren sind Funktionen, die den **`yield`**-Befehl verwenden.
```{code-block}
......
......@@ -9,8 +9,8 @@ kernelspec:
name: python3
---
(itertools)=
# Itertools
<a id="itertools"></a>
Das Modul `itertools` enthält eine Reihe von Hilfsfunktionen zum Arbeiten mit Iteratoren.
#### `count`
......
......@@ -11,8 +11,9 @@ kernelspec:
# Kontrollstrukturen
(ifelse)=
## Konditionale
<a id="ifelse"></a>
```{code-block}
if Bedingung:
Befehle
......@@ -73,8 +74,8 @@ Teilweise haben auch andere Typen Wahrheitswerte in diesem Kontext. Als Faustreg
Schleifen dienen dazu, eine Reihe von Befehlen mehrfach auszuführen, wobei die Anzahl der Wiederholungen selbst programmatisch geregelt werden kann.
(for)=
### `for`
<a id="for"></a>
```{code-block}
for Schleifenvariable in Iterierbare:
Befehle
......@@ -173,8 +174,8 @@ def calculate_sum(numbers):
calculate_sum([-1, -4, 3, 8])
```
(while)=
### `while`
<a id="while"></a>
```{code-block}
while Bedingung:
Befehle
......
......@@ -16,9 +16,8 @@ import numpy as np
import numpy.linalg as npl
import scipy.linalg as spl
```
(@)=
## Matrix- und Vektor-Produkte
<a id="@"></a>
```{code-block}
numpy.dot(array1, array2)
array1.dot(array2)
......
......@@ -17,8 +17,8 @@ Unter einer *Menge* verstehen wir jede Zusammenfassung $M$ von bestimmten wohlun
- **Enthalten**: Es gilt für alle $x \in M$ auch $x \in N$ ($M \subset N$).
- **Gleichheit**: Es gilt $M\subset N$ und $N \subset M$ ($M=N$).
(mengen)=
#### Definition
<a id="mengen"></a>
Die Definition einer beschränkten Menge kann durch
```{code-block}
......
......@@ -13,8 +13,8 @@ kernelspec:
Module sind Sammlungen von Funktionen, Klassen und Konstanten und sind der Hauptmechanismus, über den in Python zusätzliche Funktionalität bereitgestellt wird.
(module)=
## Module laden
<a id="module"></a>
```{code-block}
import modulname [as name]
```
......
......@@ -238,7 +238,7 @@ def curve(N=20):
hv.DynamicMap(curve, kdims=['N']).redim.range(N=(3, 20))
```
(integrate)=
## Integration mit Scipy
**Scpipy** ist eine auf Numpy aufbauende Bibliothek, die eine große Sammlung von Funktionen für wissenschaftliche Anwendungen enthält.
......@@ -252,7 +252,6 @@ scipy.integrate.quad(f, a, b, args=())
`args` sind zusätzliche Arguemnte, die an `f` übergeben werden.
Der Rückgabewert ist ein Tupel `(result, error_bound)`.
<a id="integrate"></a>
```{code-cell}
from scipy.integrate import quad
......
......@@ -25,8 +25,8 @@ Arrays sind -- grob gesagt -- zusammenhängende Blöcke im Arbeitsspeicher, die
Konzeptionell sind Arrays ein- oder mehrdimensionale rechteckige (oder n-dimensionale Varianten davon) Anordnungen von Zahlen.
(arrays)=
#### Erzeugen von Arrays aus Listen
<a id="arrays"></a>
```{code-block}
np.array(liste)
```
......@@ -166,9 +166,9 @@ np.diag(np.array([3, 1, 4, 1]), 1)
```{code-cell}
np.diag(np.array([3, 1, 4, 1]), -2)
```
(np_indizierung)=
## Indizierung und Slices
<a id="np_indizierung"></a>
Indizierung funktioniert ähnlich wie für Listen:
```{code-block}
......@@ -212,8 +212,8 @@ a[:3] = np.array([-1, -2, -3])
a
```
(stacking)=
## Stacking und Splitting
<a id="stacking"></a>
Arrays können entlang einer Achse zusammengesetzt werden:
- Zusammensetzen entlang einer neuen Achse. Alle Arrays müssen die gleiche `shape` haben:
......@@ -408,8 +408,8 @@ Es können auch nur einige der Dimensionen vertauscht werden, indem die neue Rei
a.transpose((0, 2, 1)).shape
```
(np_elementar)=
## Elementare Operationen
<a id="np_elementar"></a>
Die meisten Operationen werden elementweise durchgeführt. Man nennt die Funktionen, die das tun, auch *universal functions* (ufunc).
```{code-cell}
......
......@@ -36,8 +36,9 @@ print('z.conjugate() = ', z.conjugate())
`real`, `imag` und `conjugate` nennt man **Attribute** von `z`. Attribute eines Objekts sind alles, was sich über `<objekt>.<attribut-name>` referenzieren lässt. Allgemein werden Attribute immer zuerst in der Instanz gesucht, danach in der Klasse.
(klasse)=
## Definition eigener Klassen
<a id="klasse"></a>
```{code-block}
class Klassenname:
Definitionen
......@@ -147,8 +148,9 @@ print(A)
A
```
(operationen)=
### Binäre Operatoren
<a id="operationen"></a>
- `__add__` implementiert Addition.
- `__sub__` implementiert Subtraktion.
- `__mul__` implementiert Multiplikation.
......
......@@ -25,9 +25,9 @@ import pandas as pd
import holoviews as hv
hv.extension('bokeh')
```
(laden_speichern)=
## Daten einlesen und speichern mit Pandas
<a id="laden_speichern"></a>
Pandas stellt Funktionen bereit, um Daten aus beispielsweise CSV-(Comma
Separated Values)-artigen Dateien zu lesen und zu schreiben. Die Funktionalität
von Pandas CSV-Leser ist sehr hoch. Er speichert die Daten in Pandas
......@@ -183,9 +183,9 @@ Sortieren (geht sowohl mit den Spalten als auch mit dem Index):
```{code-cell}
temperatureframe.sort_values('time').head()
```
(pandas_zugriff)=
### Zugriff und Slicing
<a id="pandas_zugriff"></a>
funktioniert analog zu numpy-arrays mit den Spalten und Index-Namen.
Eine Spalte eines Dataframes ist ein `Series` Objekt.
......@@ -332,9 +332,9 @@ Das Ergebnis der Gruppierung können wir dann plotten als Temperatur über Koord
```{code-cell}
hv.HeatMap(year_average, kdims=['longitude', 'latitude'], vdims = ['tem']).options(height=500,width=800)
```
(merge)=
## Mehrere Tabellen zusammenführen
<a id="merge"></a>
Wir können mit Pandas wie mit einer relationalen Datenbank arbeiten.
Hier schauen wir uns das Verbinden von zwei Tabellen an.
Dafür besorgen wir uns zunächst zwei passende Tabellen/Daten:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment