So erstellen Sie Arrays aus gleichmäßig verteilten Zahlen

In diesem Tutorial lernen Sie, wie Sie NumPy linspace() verwenden, um ein Array von gleichmäßig verteilten Zahlen in Python zu erstellen.

Sie lernen die Syntax von NumPy linspace() kennen, 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!

NumPy installieren und importieren

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 Google Colab – eine Cloud-basierte Jupyter-Notebook-Umgebung – verwenden, 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

Importieren Sie als nächsten Schritt numpy unter dem Alias ​​np, indem Sie den folgenden Befehl ausführen. Auf diese Weise können Sie NumPy als np referenzieren – ohne jedes Mal numpy eingeben zu müssen, wenn Sie auf ein Element im Modul zugreifen.

import numpy as np

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

Der Fall für gleichmäßig verteilte Zahlen

Wenn Sie mit NumPy-Arrays arbeiten, müssen Sie manchmal ein Array aus gleichmäßig verteilten Zahlen in einem Intervall erstellen.

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

NumPy linspace() vs. NumPy arange()

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

Sie wissen, dass np.arange(start, stop, step) ein Array von Zahlen von start bis stop (ohne stop) in Schritten von step zurückgibt; die Standardschrittweite ist 1.

Der Wert von Schritt ist jedoch 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. Wenn Sie jedoch np.arange() verwenden, enthält es nicht den Stoppwert 1. Sie müssen also ein Intervall auswählen, das über den Stoppwert hinausgeht.

  Fix Roll20 Advanced Fog of War funktioniert nicht

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

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 von Schritt in diesem Fall jedoch manuell berechnen.

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

Verwenden Sie NumPy-Linspace

Wenn Sie np.linspace() verwenden, müssen Sie nur die Anzahl der Punkte im Intervall angeben – ohne sich Gedanken über die Schrittgröße machen zu müssen. Und Sie erhalten das gewünschte Array zurück.

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

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)

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

Die meisten von ihnen sind jedoch optionale 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.
  • Achse ist ein weiterer optionaler Parameter, der die Achse angibt, entlang der die Zahlen gespeichert werden sollen. Und dies ist nur relevant, wenn die Start- und Stoppwerte selbst Arrays sind.

▶️ Was gibt np.linspace() zurück?

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

  10 Spiele basierend auf Superhelden jetzt kaufen

Basierend auf der bisherigen Diskussion ist hier eine vereinfachte Syntax zur Verwendung von np.linspace():

np.linspace(start, stop, num)

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

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

So erstellen Sie gleichmäßig verteilte Arrays mit NumPy linspace()

#1. Lassen Sie uns als erstes Beispiel ein Array aus 20 gleichmäßig verteilten Zahlen im Intervall erstellen [1, 5].

Sie können die Werte von start, stop und num als Schlüsselwortargumente angeben. 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, im zurückgegebenen Array als Float dargestellt werden.

#2. Im vorherigen Beispiel hatten Sie die Werte für start, stop und num als Schlüsselwortargumente übergeben. Wenn Sie die Argumente in der richtigen Reihenfolge übergeben, können Sie sie genauso gut als Positionsargumente nur mit den Werten verwenden, 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 retstep auf True setzen.

Das bedeutet, dass die Funktion jetzt sowohl das Array als auch den Schritt zurückgibt. Und wir können sie in zwei Variablen arr3 entpacken: das Array, und step_size: die zurückgegebene Schrittgröße.

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 endpoint auf False setzen und prüfen, 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.

Wie man gleichmäßig verteilte Zahlen in einem Intervall zeichnet

Lassen Sie uns in diesem Abschnitt wählen [10,15] als interessierendes Intervall. Verwenden Sie dann np.linspace(), um zwei Arrays mit jeweils 8 bzw. 12 Punkten zu generieren.

  Behebung des Fehlers „Ihre Zahlungsmethode wurde abgelehnt“ im App Store

Nachdem dies abgeschlossen ist, können wir die Plotfunktion aus der Matplotlib-Bibliothek verwenden, um sie zu plotten.

Zur Verdeutlichung klemmen wir die beiden Arrays von N1 = 8 und N2 = 12 gleichmäßig beabstandeten Punkten 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()

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

So verwenden Sie NumPy linspace() mit mathematischen Funktionen

Nachdem Sie mit np.linspace() ein Array aus gleichmäßig verteilten Zahlen generiert haben, 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 erstellen Sie das Array y mit np.sin() auf dem Array x. Beachten Sie, dass Sie den num-Parameter überspringen können, da der Standardwert 50 ist. Wir werden ihn trotzdem explizit verwenden.

Als nächsten Schritt können Sie die Sinusfunktion im Intervall zeichnen [0, 2π]. Dazu können Sie verwenden matplotlib, wie im vorherigen Beispiel. Insbesondere wird die Funktion plot() in matplotlib.pytplot 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 setzen. 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 num gleichmäßig verteilten Zahlen im Intervall zurück [start, stop].
  • Setzen Sie den optionalen Parameter endpoint auf False, um Stop auszuschließen, und setzen Sie das Intervall auf[startstop)[startstop)
  • Setzen Sie retstep optional auf True, um die Schrittgröße zu erhalten.
  • Generieren Sie Arrays mit gleichmäßigen Abständen mit np.linspace() und verwenden Sie das Array dann mit mathematischen Funktionen.

Ich hoffe, Sie verstehen jetzt, wie np.linspace() funktioniert. Sie können die obigen Beispiele im Jupyter-Notebook ausführen. Sehen Sie sich unseren Leitfaden zu Jupyter-Notebooks oder anderen Jupyter-Alternativen an, die Sie in Betracht ziehen können.

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