Wie man Arrays unterschiedlicher Formen bei der NumPy-Addition behandelt

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Tutorial werden wir untersuchen, wie man Arrays unterschiedlicher Formen beim Durchführen von Additionen in der leistungsstarken Python-Bibliothek NumPy behandelt. Egal, ob Sie mit 1D-, 2D- oder höherdimensionalen Arrays arbeiten, Sie werden die Techniken lernen, um genaue und effiziente Array-Operationen sicherzustellen.

Einführung in NumPy-Arrays

NumPy ist eine leistungsstarke Open-Source-Bibliothek für wissenschaftliche Berechnungen in Python. Sie bietet Unterstützung für große, mehrdimensionale Arrays und Matrizen sowie eine umfangreiche Sammlung von hochwertigen mathematischen Funktionen, um auf diesen Arrays zu operieren. NumPy-Arrays sind die grundlegende Datenstruktur, die in vielen wissenschaftlichen Berechnungen und Machine-Learning-Aufgaben verwendet wird.

Was ist ein NumPy-Array?

Ein NumPy-Array ist ein Raster von Werten, alle vom gleichen Typ, und wird durch ein Tupel positiver Ganzzahlen indiziert. Die Anzahl der Dimensionen ist der Rang des Arrays, und die Form des Arrays ist ein Tupel von Ganzzahlen, das die Größe des Arrays entlang jeder Dimension angibt.

import numpy as np

## Create a 1D array
arr1d = np.array([1, 2, 3, 4, 5])
print(arr1d)
## Output: [1 2 3 4 5]

## Create a 2D array
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
## Output: [[1 2 3]
##          [4 5 6]]

Vorteile der Verwendung von NumPy-Arrays

  1. Effiziente Datenspeicherung: NumPy-Arrays speichern Daten in einem zusammenhängenden Speicherblock, was sie im Vergleich zu Python-Listen speichereffizienter macht.
  2. Schnelle Berechnungen: NumPy bietet hochoptimierte Funktionen und Operationen für die Arbeit mit Arrays, die in niedrigen Programmiersprachen wie C und Fortran implementiert sind, was sie viel schneller als reiner Python-Code macht.
  3. Vielfältigkeit: NumPy-Arrays können eine beliebige Anzahl von Dimensionen haben, und sie unterstützen eine Vielzahl von mathematischen Operationen, was sie für eine Vielzahl von wissenschaftlichen und Datenanalyseaufgaben geeignet macht.
  4. Integration mit anderen Bibliotheken: NumPy wird weit verbreitet als grundlegende Bibliothek im Ökosystem der wissenschaftlichen Python-Berechnungen verwendet und integriert sich gut mit anderen beliebten Bibliotheken wie Pandas, SciPy und Matplotlib.

Das Verständnis von Array-Formen

Die Form (Shape) eines NumPy-Arrays bezieht sich auf die Anzahl der Elemente entlang jeder Dimension. Sie wird als ein Tupel von positiven Ganzzahlen dargestellt, die die Größe des Arrays entlang jeder Achse angeben.

Zugriff auf Array-Formen

Sie können die Form eines NumPy-Arrays mithilfe des shape-Attributs zugreifen:

import numpy as np

## 1D array
arr1d = np.array([1, 2, 3, 4, 5])
print(arr1d.shape)  ## Output: (5,)

## 2D array
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d.shape)  ## Output: (2, 3)

## 3D array
arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr3d.shape)  ## Output: (2, 2, 2)

Umformen von Arrays

Sie können ein NumPy-Array mithilfe der reshape()-Methode umformen. Die neue Form muss mit der ursprünglichen Größe des Arrays kompatibel sein.

import numpy as np

## Reshape a 1D array to a 2D array
arr1d = np.array([1, 2, 3, 4, 5, 6])
arr2d = arr1d.reshape(2, 3)
print(arr2d)
## Output: [[1 2 3]
##          [4 5 6]]

## Reshape a 2D array to a 3D array
arr2d = np.array([[1, 2], [3, 4], [5, 6]])
arr3d = arr2d.reshape(3, 1, 2)
print(arr3d)
## Output: [[[1 2]]
##          [[3 4]]
##          [[5 6]]]

Broadcasting

NumPy unterstützt auch das Broadcasting, das es Ihnen ermöglicht, Operationen auf Arrays unterschiedlicher Formen auszuführen. Wenn die Formen nicht kompatibel sind, wird NumPy automatisch die kleineren Arrays umformen, um der Form des größeren Arrays zu entsprechen.

import numpy as np

## Broadcasting a 1D array with a 2D array
arr1d = np.array([1, 2, 3])
arr2d = np.array([[4, 5, 6], [7, 8, 9]])
result = arr1d + arr2d
print(result)
## Output: [[ 5  7  9]
##          [ 8 10 12]]

Addition von Arrays unterschiedlicher Formen

Beim Addieren von zwei NumPy-Arrays müssen die Formen (Shapes) der Arrays kompatibel sein. Das bedeutet, dass die Arrays die gleiche Form haben müssen oder mindestens eine der Dimensionen die Größe 1 haben muss (eine Singleton-Dimension), damit sie auf die Form des anderen Arrays erweitert (broadcast) werden kann.

Addition von Arrays mit der gleichen Form

Wenn die Arrays die gleiche Form haben, können Sie einfach den +-Operator verwenden, um eine elementweise Addition durchzuführen:

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
result = arr1 + arr2
print(result)
## Output: [[ 6  8]
##          [10 12]]

Addition von Arrays mit unterschiedlicher Form (Broadcasting)

Wenn die Arrays unterschiedliche Formen haben, wird NumPy versuchen, die Arrays auf eine gemeinsame Form zu erweitern, bevor die Addition durchgeführt wird. Broadcasting ist eine leistungsstarke Funktion, die es Ihnen ermöglicht, Operationen auf Arrays unterschiedlicher Formen durchzuführen.

import numpy as np

## Broadcasting a 1D array with a 2D array
arr1d = np.array([1, 2, 3])
arr2d = np.array([[4, 5, 6], [7, 8, 9]])
result = arr1d + arr2d
print(result)
## Output: [[ 5  7  9]
##          [ 8 10 12]]

## Broadcasting a scalar with a 2D array
scalar = 10
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
result = scalar + arr2d
print(result)
## Output: [[11 12 13]
##          [14 15 16]]

In den obigen Beispielen erweitert NumPy automatisch das 1D-Array und den Skalar, um der Form des 2D-Arrays zu entsprechen, so dass die Addition durchgeführt werden kann.

Umgang mit inkompatiblen Formen

Wenn die Arrays Formen haben, die nicht auf eine gemeinsame Form erweitert werden können, wird NumPy eine ValueError-Ausnahme auslösen:

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6, 7], [8, 9, 10]])
result = arr1 + arr2
## ValueError: operands could not be broadcast together with shapes (2,2) (2,3)

In solchen Fällen müssen Sie möglicherweise eines oder beide Arrays umformen oder transponieren, um ihre Formen kompatibel zu machen, bevor Sie die Addition durchführen.

Zusammenfassung

Am Ende dieses Tutorials werden Sie ein solides Verständnis davon haben, wie man Arrays unterschiedlicher Formen beim Durchführen von Additionen in NumPy behandelt. Sie werden mit dem Wissen ausgestattet sein, um robusten und flexiblen Python-Code zu schreiben, der nahtlos eine Vielzahl von Array-Konfigurationen verarbeiten kann. Dies befähigt Sie, komplexere Datenanalyse- und wissenschaftliche Rechenaufgaben anzugehen.