In diesem Tutorial lernen Sie, wie Sie NumPy linspace() um ein Array aus gleichmäßig verteilten Zahlen in Python zu erstellen.
Sie werden die Syntax von NumPy lernen linspace()
, gefolgt von Beispielen, die Ihnen helfen werden, die Anwendung zu verstehen.
Anmerkung: Um diesem Tutorial folgen zu können, müssen Sie Python und NumPy installiert haben.
Sie haben noch kein NumPy? Wir haben eine kurze Installationsanleitung für Sie zusammengestellt.
Fangen wir an!
NumPy installieren und importieren
Bevor wir mit dem Lernprogramm beginnen, sollten wir kurz die Schritte zur Installation der NumPy-Bibliothek durchgehen.
Wenn Sie NumPy bereits installiert haben, können Sie mit dem nächsten Abschnitt fortfahren.
- Wenn Sie Folgendes verwenden Google Colab-eine cloudbasierte Jupyter-Notizbuch Umgebung, können Sie NumPy importieren und sofort mit der Programmierung beginnen. (empfohlen für dieses Lernprogramm ✅)
- Wenn Sie eine lokale Arbeitsumgebung einrichten möchten, empfehle ich die Installation der Anaconda-Distribution von Python. In Anaconda sind mehrere nützliche Pakete vorinstalliert. Sie können das Installationsprogramm für Ihr Betriebssystem herunterladen. Der Installationsprozess dauert nur wenige Minuten.⌛
- Wenn Sie Python bereits auf Ihrem Computer installiert haben, können Sie trotzdem die Anaconda-Distribution installieren. Sie können conda oder pip verwenden, um Pakete zu installieren und zu verwalten. Sie können einen der folgenden Befehle in der Anaconda-Eingabeaufforderung ausführen, um NumPy zu installieren.
# Install NumPy using conda
conda install numpy
# Install NumPy using pip
pip install numpy
In einem nächsten Schritt importieren Sie numpy
unter dem Aliasnamen np
indem Sie den folgenden Befehl ausführen. Dadurch können Sie NumPy als np
-ohne abtippen zu müssen numpy
jedes Mal, wenn Sie auf ein Element des Moduls zugreifen.
import numpy as np
In Zukunft werden wir die Punktnotation verwenden, um auf alle Funktionen in der NumPy-Bibliothek wie folgt zuzugreifen: np.<func-name>
.
Das Argument für gleichmäßig beabstandete Zahlen
Bei der Arbeit mit NumPy-Arraysgibt es Fälle, in denen Sie eine Reihe von gleichmäßig verteilten Zahlen in einem Intervall erstellen müssen.
Bevor wir weitermachen, wollen wir kurz eine andere ähnliche Funktion erläutern np.arange()
.
NumPy linspace() vs. NumPy arange()
Wenn Sie schon einmal NumPy benutzt haben, haben Sie wahrscheinlich np.arange()
um eine Reihe von Zahlen innerhalb eines bestimmten Bereichs zu erstellen.
Sie wissen, dass
np.arange(start, stop, step)
gibt ein Array von Zahlen ausstart
bis zu, aber nicht einschließlichstop
in Schritten vonstep
Die Standardschrittweite beträgt 1.
Allerdings ist der Wert von step sind nicht immer offensichtlich. Sehen wir uns an, warum dies der Fall ist.
Wenn Sie zum Beispiel 4 gleichmäßig verteilte Zahlen zwischen 0 und 1 benötigen, wissen Sie, dass die Schrittweite 0,25 betragen muss. Wenn Sie aber np.arange()
Sie müssen also ein Intervall wählen, das über den Stoppwert hinausgeht.
Die folgende Abbildung zeigt einige weitere Beispiele, bei denen Sie eine bestimmte Anzahl gleichmäßig verteilter Punkte im Intervall [a, b] benötigen.

Unser erstes Beispiel mit 4 gleichmäßig verteilten Punkten in [0,1] war einfach genug. Sie wissen, dass die Schrittweite zwischen den Punkten 0,25 betragen sollte.
Nehmen wir an, Sie haben ein etwas komplizierteres Beispiel, bei dem Sie 7 gleichmäßig verteilte Punkte zwischen 1 und 33 auflisten müssen. In diesem Fall ist die Schrittweite vielleicht nicht sofort klar. Sie können jedoch manuell den Wert von step
in diesem Fall.
Allerdings, np.linspace()
ist hier, um es für Sie noch einfacher zu machen! 😄

Bei der Verwendung von np.linspace()
müssen Sie nur die Anzahl der Punkte im Intervall angeben, ohne sich um die Schrittweite zu kümmern. Und Sie erhalten das Array wie gewünscht zurück.
Mit dieser Motivation wollen wir nun die Syntax von NumPy lernen linspace()
im nächsten Abschnitt.
Syntax von NumPy linspace()
Die Syntax für die Verwendung von NumPy linspace()
ist unten dargestellt:
np.linspace(start, stop, num, endpoint, retstep, dtype, axis)
Auf den ersten Blick mag die obige Syntax mit ihren vielen Parametern sehr kompliziert erscheinen.
Die meisten von ihnen sind jedoch optional Parameter, und wir werden in wenigen Minuten zu einer viel einfacheren Syntax kommen.
Beginnen wir nun mit der Analyse der obigen Syntax:
start
undstop
sind der Anfangs- bzw. Endpunkt des Intervalls. Sowohl start als auch stop können Skalare oder Arrays sein. In diesem Lehrgang beschränken wir uns auf skalare Start- und Endwerte.num
ist die Anzahl der gleichmäßig verteilten Punkte. Es handelt sich um einen optionalen Parameter mit einem Standardwert von 50.endpoint
ist ebenfalls ein optionaler Parameter, der entweder True oder False sein kann.- Der Standardwert ist True, was bedeutet, dass der Endpunkt standardmäßig in das Intervall einbezogen wird. Sie können den Wert jedoch auch auf False setzen, um den Endpunkt auszuschließen.
retstep
ist ein weiterer optionaler Parameter, der die Booleschen Werte True oder False annimmt. Ist er auf True gesetzt, wird der Stufenwert zurückgegeben.dtype
ist der Datentyp der Zahlen im Array. Der Typ wird normalerweise als Float abgeleitet und muss nicht explizit angegeben werden.axis
ist ein weiterer optionaler Parameter, der die Achse angibt, entlang der die Zahlen gespeichert werden sollen. Dies ist nur relevant, wenn diestart
und diestop
Werte sind selbst Arrays.
▶️ Was bedeutet also np.linspace()
zurückkehren?
Sie gibt ein N-dimensionales Feld mit gleichmäßig verteilten Zahlen zurück. Und wenn der Parameter retstep
wird eingestellt auf True
gibt sie auch die Schrittweite zurück.
Auf der Grundlage der bisherigen Diskussion ist die folgende vereinfachte Syntax zu verwenden np.linspace()
:
np.linspace(start, stop, num)
Die obige Codezeile gibt ein Array von
num
gleichmäßig verteilte Zahlen im Intervall[start, stop]
.
Nachdem Sie nun die Syntax kennen, können wir mit der Programmierung von Beispielen beginnen.
Wie man mit NumPy linspace() gleichmäßig beabstandete Arrays erstellt
#1. Als erstes Beispiel wollen wir ein Feld mit 20 gleichmäßig verteilten Zahlen im Intervall [1, 5] erstellen.
Sie können die Werte von start
, stop
und num
als Schlüsselwortargumente. Dies wird in der nachstehenden Codezelle gezeigt:
import numpy as np
arr1 = np.linspace(start = 1,stop = 5,num = 20)
print(arr1)
# Output:
[1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158
2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947
3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737
4.78947368 5. ]
Beachten Sie, dass die Zahlen in der Matrix bei 1 beginnen und bei 5 enden - einschließlich der beiden Endpunkte. Beachten Sie auch, wie die Zahlen, einschließlich der Punkte 1 und 5, dargestellt werden als float
in dem zurückgegebenen Array.
#2. Im vorherigen Beispiel hatten Sie die Werte für start
, stop
und num
als Schlüsselwortargumente. Wenn Sie die Argumente in der richtigen Reihenfolge übergeben, können Sie sie genauso gut als Positionsbezogene Argumente mit nur den Werten, wie unten gezeigt.
import numpy as np
arr2 = np.linspace(1,5,20)
print(arr2)
# Output:
[1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158
2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947
3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737
4.78947368 5. ]
#3. Erstellen wir nun ein weiteres Array, in dem wir retstep
zu True
.
Das bedeutet, dass die Funktion nun sowohl das Array als auch den Schritt zurückgibt. Und wir können sie in zwei Variablen entpacken arr3
: das Array, und step_size
: die zurückgegebene Schrittweite.
Die folgende Code-Zelle erklärt, wie Sie dies tun können.
import numpy as np
arr3, step_size = np.linspace(1,5,20,retstep = True)
print(arr3)
# Output:
[1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158
2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947
3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737
4.78947368 5. ]
# Output:
print(step_size)
0.21052631578947367
#4. Als letztes Beispiel wollen wir endpoint
zu False
und prüfen Sie, was passiert.
import numpy as np
arr4 = np.linspace(1,5,20,endpoint = False)
print(arr4)
# Output:
[1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8 3. 3.2 3.4 3.6 3.8
4. 4.2 4.4 4.6 4.8]
Im zurückgegebenen Array sehen Sie, dass die 1 enthalten ist, während die 5 nicht enthalten ist. Und der letzte Wert im Array ist zufällig 4,8, aber wir haben immer noch 20 Zahlen.
Bisher haben wir nur Arrays mit gleichmäßig verteilten Zahlen erzeugt. Im nächsten Abschnitt wollen wir diese Zahlen visualisieren, indem wir sie grafisch darstellen.
Darstellung gleichmäßig verteilter Zahlen in einem Intervall
In diesem Abschnitt wählen wir [10,15] als das Intervall, das uns interessiert. Und dann verwenden wir np.linspace()
um zwei Felder mit jeweils 8 bzw. 12 Punkten zu erzeugen.
Nachdem dies abgeschlossen ist, können wir die Plotting-Funktion aus der matplotlib
Bibliothek, um sie darzustellen.
Der Klarheit halber klemmen wir die beiden Arrays von N1 = 8 und N2 = 12 gleichmäßig verteilte Punkte an verschiedenen Positionen entlang der y-Achse.
Der folgende Codeschnipsel veranschaulicht dies.
import numpy as np
import matplotlib.pyplot as plt
N1 = 8
N2 = 12
a = 10
b = 15
y1 = np.zeros(N1)
y2 = np.zeros(N2)
x1 = np.linspace(a, b, N1)
x2 = np.linspace(a, b, N2)
plt.plot(x1, y1-0.5, 'o')
plt.plot(x2, y2 + 0.5, 'o')
plt.ylim([-1, 1])
plt.title(f'Evenly Spaced Numbers in the Interval [{a},{b}]')
plt.xlabel('Interval')
plt.show()

Das Erzeugen von Punkten mit gleichmäßigen Abständen kann bei der Arbeit mit mathematischen Funktionen hilfreich sein. Das lernen wir im nächsten Abschnitt.
Wie man NumPy linspace() mit mathematischen Funktionen verwendet
Nachdem Sie ein Array von gleichmäßig verteilten Zahlen mit np.linspace()
können Sie die Werte von mathematischen Funktionen im Intervall berechnen.
In der nachstehenden Codezelle erzeugen Sie zunächst 50 gleichmäßig verteilte Punkte im Intervall 0 bis 2π. Und dann erstellen Sie das Array y
mit np.sin()
auf dem Array x
. Beachten Sie, dass Sie die num
Parameter, da der Standardwert 50 ist. Wir werden ihn trotzdem explizit verwenden.
In einem nächsten Schritt können Sie die Sinusfunktion im Intervall [0, 2π] aufzeichnen. Hierfür können Sie Folgendes verwenden matplotlibwie im vorherigen Beispiel. Genauer gesagt, die plot()
Funktion in matplotlib.pytplot
wird verwendet, um ein Liniendiagramm zu erstellen.
import numpy as np
import matplotlib.pyplot as plt
N = 50
a = 0.0
b = 2*np.pi
x = np.linspace(a, b, N)
y = np.sin(x)
plt.plot(x, y, marker = "o")
plt.ylim([-1, 1])
plt.title(f'y = sin(x)')
plt.xlabel('x ---->')
plt.show()

Führen Sie nun den obigen Code aus, indem Sie N
gleich 10. Sie erhalten das in der folgenden Abbildung gezeigte Diagramm.

Sie sehen, dass das Diagramm nicht sehr glatt ist, da Sie nur 10 Punkte in dem Intervall ausgewählt haben.
Im Allgemeinen gilt: Je mehr Punkte Sie berücksichtigen, desto glatter wird die Darstellung der Funktion.
Schlussfolgerung
Hier eine Zusammenfassung dessen, was wir erfahren haben.
- np.linspace(start, stop, num) gibt ein Array von num gleichmäßig verteilte Zahlen im Intervall [start, stop].
- Setzen Sie den optionalen Parameter endpoint zu False auszuschließen stopund setzen Sie das Intervall auf (Start, Stopp).
- Satz retstep zu True optional, um die Schrittweite zu erhalten.
- Erzeugen Sie gleichmäßig verteilte Arrays mit np.linspace()und verwenden Sie dann das Feld mit mathematischen Funktionen.
Ich hoffe, Sie verstehen jetzt, wie np.linspace() funktioniert. Sie können die obigen Beispiele auch im Jupyter-Notebook ausführen. Lesen Sie unseren Leitfaden zu Jupyter-Notizbuchoder andere Jupyter-Alternativen können Sie in Betracht ziehen.
Bis bald in einem weiteren Python-Tutorial. Bis dahin, programmieren Sie weiter!😀