Sicher verstaut - Deduplizierung spart Platz, Cloud-Backup für Windows, Areca sichert kostenlos. ADMIN 01/14 stellt Backups für Profis mit und ohne Cloud ... (mehr)

Arrays generieren

Sind die Inhalte beim Erstellen eines Arrays noch unbekannt, erzeugt »np.zeros()« eine mit Nullen gefüllte Struktur vorgegebener Größe. Als Argument kommt ein Integer-Tupel zum Einsatz, in dem jeder Eintrag das Ausmaß einer Dimension repräsentiert. Für eindimensionale Arrays genügt ein einfacher Integer-Wert:

array2d = np.zeros((5,5))
array1d = np.zeros(5)

Wer den bei »np.zeros()« verwendeten Nullen als initiale Elemente Einsen vorzieht, erhält ein solches Array auf die gleiche Weise mit »np.ones()« .

Geringfügig schneller funktioniert »np.empty()« , da es die resultierende Datenstruktur nicht mit Inhalten initialisiert. Das Ergebnis enthält deshalb willkürliche Werte, die bereits an den verwendeten Speicherstellen stehen. Als echte Zufallszahlen taugen diese allerdings nicht.

Die Syntax von »np.empty()« ist dieselbe wie bei »np.zeros()« und »np.ones()« . Alle drei Funktionen kennen außerdem ein Pendant mit dem Suffix »_like« , also beispielsweise »np.zeros_like()« . Diese Methoden kopieren die Form eines bereits vorhandenen Arrays, das als Argument übergeben wird, und erzeugen anhand dessen eine neue, gleich dimensionierte Datenstruktur mit den gewünschten Initialwerten.

Des Weiteren nehmen die genannten Methoden das optionale Argument »dtype« entgegen. Es erwartet als Wert einen NumPy-Datentyp, beispielsweise, »np.int32« , »np.string_« oder »np.bool« , den es dem erzeugten Array statt des Standards Fließkommazahl zuweist. Im Fall von »np.empty()« ergeben sich daraus wieder willkürliche Inhalte.

Die NumPy-Methode »arange()« schließlich funktioniert analog zum Python-Befehl »range()« : Bei Angabe eines Integer-Arguments erzeugt es ein Array jener Länge, wobei es die Werte mit einer schrittweisen Folge initialisiert:

In: np.arange(3)
Out: array([0, 1, 2])

Optional nimmt »arange()« ebenfalls wie das Python-Pendant »range()« ein oder zwei weitere Argumente entgegen. Das zweite definiert einen Endwert, wodurch das erste zum Startwert der Folge wird. Das dritte Argument ändert optional die Schrittgröße. Dieses Beispiel erzeugt also eine Folge von 3 bis 10 mit der Schrittgröße 2:

In: np.arange(3, 10, 2)
Out: array([3, 5, 7, 9])

Grundrechenarten

NumPy erlaubt viele Operationen über alle Elemente eines Arrays, ohne dabei in Python-Manier Schleifen zu durchlaufen. Dabei kommen die bekannten mathematischen Operatoren zum Einsatz, beispielsweise »+« für die einfache Addition. Als Grundregel gilt, dass sich der Operator bei zwei gleichförmigen Arrays auf die in beiden Arrays an der gleichen Position stehenden Elemente auswirkt. Addiert man hingegen ein Skalar, also eine Zahl, zu einem Array, fügt NumPy jedem Array-Element jene Zahl hinzu:

In: np.array([1,2,3]) + np.array([3,2,1])
Out: array([4, 4, 4])
In: np.array([1,2,3]) + 1
Out: array([2, 3, 4])

Auf die gleiche Weise funktionieren Multiplikation, Division, Subtraktion und auch Potenzrechnung mit »**« . Darüber hinaus stellt NumPy einige universelle Funktionen für weitere Berechnungen zur Verfügung, etwa »sqrt()« und »square()« , die von jedem Inhaltselement eines Arrays die Quadratwurzel ziehen beziehungsweise sie mit zwei potenzieren.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019