# functions

In dieser Aufgabe machen wir uns mit NumPy-Funktionen vertraut
die man auf NumPy-Arrays anwenden kann. Im Einzelnen sind dies:

np.sum
np.diff
np.prod
np.mean
np.std
np.min
np.max

Ganz wichtig: KEINE PANIK!
Diese Aufgabe und auch die zugehörige Lösung sind etwas lang. Das sollte dich aber nicht abschrecken.
Diese Aufgabe ist nicht schwer, man hat nur 'viel' zu tippen.
Es geht hier nicht darum, die Lösung 1 zu 1 nachzuarbeiten,
es geht nur darum, ein Gefühl dafür zu bekommen, wie die numpy Funktionen in unterschiedlichen
Dimensionen funktionieren. Es reicht also auch vollkommen, die ganze Aufgabe nur mit
einer (z.B. nur np.sum) der obigen Funktionen durchzuarbeiten, wenn du das Gefühl hast verstanden
zu haben, wie das ganze funktioniert.


1) Was geben diese Funktionen zurück, wenn sie auf das Array
   A = np.array([0, 1, 2, 3, 4]) angewendet werden.

2) Was geben diese Funktionen zurück, wenn sie auf das Array
   B = np.array([[2, 1, 2, 1, 2], [1, 2, 1, 2, 1], [3, 1, 3, 1, 3]])
   angewendet werden. Bei mehrdimensionalen Arrays gibt es unter anderem
   ein weiteres Argument für die obigen Funktionen.
   Dieses keywordargument heißt 'axis' und kann bei 2D Arrays wie folgt verwendet werden:
   np.sum(B, axis=0)
   np.sum(B, axis=1)
   np.sum(B, axis=(0, 1))

   Man kann das keywordargument aber auch weiterhin weglassen.
   Probiere alle vier Möglichkeiten mit allen obigen Funktionen aus.
   (Hinweis: Die Funktion np.diff funktioniert etwas anders als die anderen Funktionen.
   Zum Beispiel funktioniert 'axis=(0, 1)' für diese Funktion nicht.)

3) In der Datei einkauf.txt sind die Kosten für die Einkäufe einer
   Studenten-WG eingetragen. Jeder der fünf Mitbewohner hält darin
   für jeden Tag des Monats fest, wie viel er ausgegeben hat.

   a) Wie viel hat jeder Mitbewohner in diesem Monat insgesamt (im Mittel) ausgegeben.
      Wie viel haben alle fünf zusammen in diesem Monat ausgegeben.

   b) Wie viel wurde an jedem Tag in diesem Monat insgesamt (im Mittel) ausgegeben.

   c) Was war die höchste (niedrigste) Einzelausgabe jeder Person.
      Was war die höchste (niedrigste) Einzelausgabe an jedem Tag.

   d) Es gibt noch ein keywordargument für die meisten dieser Funktionen 'keepdims'.
      Für dieses gibt es nur zwei mögliche Werte.
      np.sum(B, axis=1, keepdims=False) -> Das hier ist der Standardwert und muss nicht extra ausprobiert werden.
      np.sum(B, axis=1, keepdims=True)
      Probiere dieses keywordargument nach Belieben an einigen der bereits berechneten
      arrays aus.
