Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

NumPy linspace(): So erstellen Sie Arrays aus gleichmäßig verteilten Zahlen

python numpy linspace
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

In diesem Tutorial lernen Sie die Verwendung NumPy Linspace() um in Python ein Array aus gleichmäßig verteilten Zahlen zu erstellen.

Sie lernen die Syntax von NumPy kennen linspace(), gefolgt von Beispielen, die Ihnen helfen, die Verwendung zu verstehen.

Hinweis: Um diesem Tutorial folgen zu können, müssen Sie Python und NumPy installiert haben.

Du hast NumPy noch nicht? Wir haben für Sie eine kurze Installationsanleitung zusammengestellt.

Lasst uns beginnen!

Install and Import NumPy

Bevor Sie mit dem Tutorial beginnen, lassen Sie uns schnell die Schritte zum Installieren der NumPy-Bibliothek durchgehen.

⏩ Wenn Sie NumPy bereits installiert haben, können Sie gerne zum nächsten Abschnitt springen.

  • Wenn Sie mit Google Colab– ein Cloud-basiertes Jupyter Notizbuch Umgebung können Sie NumPy importieren und sofort mit dem Programmieren beginnen. (empfohlen für dieses Tutorial ✅)
  • Wenn Sie eine lokale Arbeitsumgebung einrichten möchten, empfehle ich die Installation der Anaconda-Distribution von Python. Anaconda wird mit mehreren nützlichen vorinstallierten Paketen geliefert. Sie können das Installationsprogramm für Ihr Betriebssystem herunterladen. Der Einrichtungsvorgang 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 von der Anaconda-Eingabeaufforderung ausführen, um NumPy zu installieren.
# Install NumPy using conda
conda install numpy

# Install NumPy using pip
pip install numpy

Als nächsten Schritt importieren numpy unter dem Pseudonym np indem Sie den folgenden Befehl ausführen. Dadurch können Sie NumPy als referenzieren np– ohne abtippen zu müssen numpy jedes Mal, wenn Sie auf ein Element im Modul zugreifen.

import numpy as np

In Zukunft verwenden wir die Punktnotation, um auf alle Funktionen in der NumPy-Bibliothek wie folgt zuzugreifen: np.<func-name>.

The Case for Evenly Spaced Numbers

Wenn Sie mit arbeiten NumPy-Arrays, gibt es Zeiten, in denen Sie ein Array von gleichmäßig verteilten Zahlen in einem Intervall erstellen müssen.

Bevor wir weitermachen, lassen Sie uns schnell eine andere ähnliche Funktion durchgehen np.arange().

NumPy linspace() vs. NumPy arange()

Wenn Sie NumPy zuvor verwendet haben, haben Sie wahrscheinlich verwendet np.arange() um ein Array von Zahlen innerhalb eines bestimmten Bereichs zu erstellen.

Du weißt, dass np.arange(start, stop, step) gibt ein Array von Zahlen zurück start bis, aber nicht inklusive stop, in Schritten von step; die Standardschrittweite ist 1.

Der Wert von Schritt vielleicht nicht immer offensichtlich. Mal sehen, warum das so ist.

Wenn Sie beispielsweise 4 gleichmäßig verteilte Zahlen zwischen 0 und 1 benötigen, wissen Sie, dass die Schrittweite 0.25 betragen muss. Aber wenn Sie verwenden np.arange(), enthält es nicht den Stoppwert 1. Sie müssen also ein Intervall auswählen, das über den Stoppwert hinausgeht.

Das folgende Bild veranschaulicht einige weitere Beispiele, bei denen Sie eine bestimmte Anzahl von gleichmäßig verteilten Punkten im Intervall [a, b] benötigen.

numpy-linspace
Gleichmäßig verteilte Punkte in einem Intervall

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.

Angenommen, Sie haben ein etwas komplizierteres Beispiel, bei dem Sie 7 gleichmäßig verteilte Punkte zwischen 1 und 33 auflisten müssten. Hier ist die Schrittgröße möglicherweise nicht sofort sehr klar. Sie können den Wert jedoch manuell berechnen step in diesem Fall.

Aber, np.linspace() ist hier, um es Ihnen noch einfacher zu machen! 😄

use-numpy-linspace
Verwenden Sie NumPy-Linspace

Beim Benutzen np.linspace(), müssen Sie nur die Anzahl der Punkte im Intervall angeben – ohne sich Gedanken über die Schrittweite machen zu müssen. Und Sie erhalten das gewünschte Array zurück.

Lassen Sie uns mit dieser Motivation fortfahren, die Syntax von NumPy zu lernen linspace() im nächsten Abschnitt.

Syntax of NumPy linspace()

Die Syntax für die Verwendung von NumPy linspace() wird unten gezeigt:

np.linspace(start, stop, num, endpoint, retstep, dtype, axis)

Am Anfang mag die obige Syntax mit vielen Parametern sehr kompliziert erscheinen.

Die meisten sind es jedoch optional Parameter, und wir werden in nur wenigen Minuten zu einer viel einfacheren Syntax kommen.

Beginnen wir nun damit, die obige Syntax zu analysieren:

  • start und stop sind die Start- bzw. Endpunkte des Intervalls. Sowohl start als auch stop können Skalare oder Arrays sein. Wir beschränken uns in diesem Tutorial auf skalare Start- und Endwerte.
  • num ist die Anzahl der gleichmäßig verteilten Punkte. Und es ist ein optionaler 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 eingeschlossen wird. Sie können es jedoch auf False setzen, um den Endpunkt auszuschließen.
  • retstep ist noch ein weiterer optionaler Parameter, der die booleschen Werte True oder False annimmt. Wenn es auf True gesetzt ist, wird der Schrittwert 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. Und das ist nur relevant, wenn die start und stop Werte sind selbst Arrays.

▶️ Also was macht np.linspace() Rückkehr?

Es gibt ein N-dimensionales Array von gleichmäßig verteilten Zahlen zurück. Und wenn der Parameter retstep eingestellt ist True, es gibt auch die Schrittweite zurück.

Basierend auf der bisherigen Diskussion ist hier eine vereinfachte Syntax zu verwenden np.linspace():

np.linspace(start, stop, num)

Die obige Codezeile gibt ein Array von zurück num gleichmäßig verteilte Zahlen im Intervall [start, stop].

Nachdem Sie nun die Syntax kennen, beginnen wir mit der Codierung von Beispielen.

How to Create Evenly Spaced Arrays with NumPy linspace()

# 1. Als erstes Beispiel erstellen wir ein Array aus 20 gleichmäßig verteilten Zahlen im Intervall [1, 5].

Sie können die Werte von angeben start, stop und num als Schlüsselwortargumente. Dies wird in der folgenden Codezelle angezeigt:

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, wie die Zahlen im Array 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 float im zurückgegebenen Array.

# 2. Im vorherigen Beispiel hatten Sie die Werte für übergeben start, stop und num as Keyword-Argumente. Wenn Sie die Argumente in der richtigen Reihenfolge übergeben, können Sie sie genauso gut verwenden Positionsargumente 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. Lassen Sie uns nun ein weiteres Array erstellen, in dem wir festgelegt haben retstep zu True.

Das bedeutet, dass die Funktion jetzt 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 Codezelle 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. Lassen Sie uns als letztes Beispiel festlegen 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 1 enthalten ist, während 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 generiert. Lassen Sie uns im nächsten Abschnitt diese Zahlen visualisieren, indem wir sie grafisch darstellen.

How to Plot Evenly Spaced Numbers in an Interval

In diesem Abschnitt wählen wir [10,15] als interessierendes Intervall. Und dann verwenden np.linspace() um zwei Arrays mit jeweils 8 bzw. 12 Punkten zu erzeugen.

Nachdem dies abgeschlossen ist, können wir die Plotfunktion von verwenden matplotlib Bibliothek, um sie zu plotten.

Zur Verdeutlichung klemmen wir die beiden Arrays von N1 = 8 und N2 = 12 gleichmäßig beabstandete Punkte an verschiedenen Positionen entlang der y-Achse.

Das folgende Code-Snippet demonstriert 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()
numpy-linspace-plot

Das Generieren gleichmäßig verteilter Punkte kann bei der Arbeit mit mathematischen Funktionen hilfreich sein. Das erfahren wir im nächsten Abschnitt.

How to Use NumPy linspace() with Math Functions

Nachdem Sie mithilfe von ein Array aus gleichmäßig verteilten Zahlen generiert haben np.linspace(), können Sie die Werte mathematischer Funktionen im Intervall berechnen.

In der Codezelle unten erzeugen Sie zunächst 50 gleichmäßig verteilte Punkte im Intervall 0 bis 2π. Und dann das Array erstellen y Verwendung von np.sin() auf dem Array x. Beachten Sie, dass Sie die überspringen können num Parameter, da der Standardwert 50 ist. Wir werden ihn weiterhin explizit verwenden.

Als nächsten Schritt können Sie die Sinusfunktion im Intervall [0, 2π] zeichnen. Dazu können Sie verwenden Matplotlib, wie im vorherigen Beispiel. Insbesondere 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 durch Einstellung aus N gleich 10. Sie erhalten den Plot wie in der Abbildung unten gezeigt.

Und Sie können sehen, dass der Plot nicht sehr glatt ist – da Sie nur 10 Punkte im Intervall ausgewählt haben.

Im Allgemeinen gilt: Je größer die Anzahl der Punkte, die Sie berücksichtigen, desto glatter wird die Darstellung der Funktion.

Fazit

Hier ist eine Zusammenfassung dessen, was wir gelernt haben.

  • np.linspace(start, stop, num) gibt ein Array von zurück num gleichmäßig verteilte Zahlen im Intervall [Start stop].
  • Legen Sie den optionalen Parameter fest Endpunkt zu falsch ausschließen halt, und stellen Sie das Intervall auf ein [Start stop).
  • Hier, Schritt zurück zu Wahre optional, um die Schrittweite zu erhalten.
  • Generieren Sie gleichmäßig verteilte Arrays mit np.linspace(), und verwenden Sie dann das Array mit mathematischen Funktionen.

Ich hoffe du verstehst jetzt wie np.linspace() funktioniert. Sie können die obigen Beispiele im Jupyter-Notebook ausführen. Sehen Sie sich unseren Leitfaden an Jupyter NotizbuchOder andere Jupyter-Alternativen Sie können überlegen.

Bis bald in einem weiteren Python-Tutorial. Bis dahin weiter programmieren!😀

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder