# 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
      np.sum(B, axis=1, keepdims=True)     muss nicht extra ausprobiert werden.
      
      Probiere dieses keywordargument nach Belieben an einigen der bereits
      berechneten arrays aus.
