numpy.arange() und numpy.linspace() erzeugen numpy.ndarray mit gleichmäßig verteilten Werten.
Der Unterschied besteht darin, dass bei np.arange() das Intervall und bei np.linspace() sterben Anzahl der Elemente angegeben WIRD.
Dieser Artikel enthält Folgendes:
- Geben Sie das Intervall an:
numpy.arange()
- Geben Sie die Anzahl der Elemente an:
numpy.linspace()
- Grundlegende Verwendung
- Stopp einschließen oder nicht:
endpoint
- Holen Sie sich das Intervall:
retstep
- In umgekehrter Reihenfolge umwandeln
- In ein mehrdimensionales Array konvertieren
Geben Sie das Intervall an:numpy.arange()
numpy.arange() ähnelt Pythons eingebauter Funktion range(). Siehe den following Artikel für range().
numpy.arange() generiert numpy.ndarray mit gleichmäßig verteilten Werten wie folgt gemäß der Anzahl der angegebenen Argumente.
- numpy.arrange(stop)
- numpy.arange(start, stop)
- numpy.arange(Start, Stopp, Schritt)
- start <= n < stop (schrittweise steigend)
import numpy as npprint(np.arange(3))# [0 1 2]print(np.arange(3, 10))# [3 4 5 6 7 8 9]print(np.arange(3, 10, 2))# [3 5 7 9]
Im Gegensatz zu range() can SIE float als Argument für numpy.arange() angeben.
print(np.arange(0.3, 1.0, 0.2))# [0.3 0.5 0.7 0.9]
Das Verhalten bei negativen Werten entspricht dem von range(). Wenn kein entsprechender Wert vorhanden ist, wird ein leeres numpy.ndarray generiert.
print(np.arange(-3, 3))# [-3 -2 -1 0 1 2]print(np.arange(10, 3))# []print(np.arange(10, 3, -2))# [10 8 6 4]
Der Datentyp dtype WIRD automatisch ausgewählt, kann aber mit dem Argument dtype angegeben werden.
print(np.arange(3, dtype=float))# [0. 1. 2.]print(np.arange(3, 10, dtype=float))# [3. 4. 5. 6. 7. 8. 9.]print(np.arange(3, 10, 2, dtype=float))# [3. 5. 7. 9.]
Weitere Informationen zum Datentyp dtype in NumPy finden Sie im following Artikel.
Geben Sie die Anzahl der Elemente an:numpy.linspace()
Grundlegende Verwendung
Mit numpy.linspace() can SIE anstelle des Intervalls sterben Anzahl der Elemente angeben.
Geben Sie den Startwert im ersten Argument start, den Endwert im zweiten Argument stop und die Anzahl der Elemente im dritten Argument num an. Das Intervall WIRD anhand dieser Werte automatisch berechnet.
import numpy as npprint(np.linspace(0, 10, 3))# [ 0. 5. 10.]print(np.linspace(0, 10, 4))# [ 0. 3.33333333 6.66666667 10. ]print(np.linspace(0, 10, 5))# [ 0. 2.5 5. 7.5 10. ]
Es behandelt auch den Fall von Start > Stopp richtig.
print(np.linspace(10, 0, 5))# [10. 7.5 5. 2.5 0. ]
Der Datentyp dtype WIRD automatisch ausgewählt, kann aber mit dem Argument dtype angegeben werden.
print(np.linspace(0, 10, 3, dtype=int))# [ 0 5 10]
Stopp einschließen oder nicht:endpoint
Standardmäßig ist der Wert von stop im Ergebnis enthalten.
If das Argument endpoint auf False gesetzt ist, enthält das Ergebnis nicht stop.
print(np.linspace(0, 10, 5))# [ 0. 2.5 5. 7.5 10. ]print(np.linspace(0, 10, 5, endpoint=False))# [0. 2. 4. 6. 8.]
Die Beziehung zwischen dem Endpunkt des Arguments und dem Intervallschritt ist wie folgt.
- endpoint=True (Standard)
- step = (stop – start) / (num – 1)
- Endpunkt=Falsch
- step = (stop – start) / num
Holen Sie sich das Intervall:retstep
Wenn Sie das Intervall erhalten möchten, setzen Sie das Argument retstep auf True.
In diesem Fall gibt es numpy.linspace() ein Tupel mit zwei Elementen zurück (numpy.ndarray, step).
result = np.linspace(0, 10, 5, retstep=True)print(result)# (array([ 0. , 2.5, 5. , 7.5, 10. ]), 2.5)print(type(result))# <class 'tuple'>print(result[0])# [ 0. 2.5 5. 7.5 10. ]print(result[1])# 2.5
Wenn Sie nur den Schritt überprüfen möchten, holen Sie sich das zweite Element mit dem Index.
print(np.linspace(0, 10, 5, retstep=True)[1])# 2.5print(np.linspace(0, 10, 5, retstep=True, endpoint=False)[1])# 2.0
In umgekehrter Reihenfolge umwandeln
Mit numpy.arange() can SIE ein Array in umgekehrter Reihenfolge erhalten, wenn Sie die Argumente richtig angeben, aber das ist problematisch.
print(np.arange(3, 10, 2))# [3 5 7 9]print(np.arange(9, 2, -2))# [9 7 5 3]
Es ist einfach, Slice [::-1] oder numpy.flip() zu verwenden.
print(np.arange(3, 10, 2)[::-1])# [9 7 5 3]print(np.flip(np.arange(3, 10, 2)))# [9 7 5 3]
Im Fall von numpy.linspace() can SIE die Reihenfolge einfach umkehren, indem Sie das erste Argument start und das zweite Argument stop ersetzen. Das Ergebnis ist dasselbe mit Slice [::-1] und numpy.flip().
print(np.linspace(0, 10, 5))# [ 0. 2.5 5. 7.5 10. ]print(np.linspace(10, 0, 5))# [10. 7.5 5. 2.5 0. ]print(np.linspace(0, 10, 5)[::-1])# [10. 7.5 5. 2.5 0. ]print(np.flip(np.linspace(0, 10, 5)))# [10. 7.5 5. 2.5 0. ]
In ein mehrdimensionales Array konvertieren
Weder numpy.arange() noch numpy.linspace() haben Argumente, um die Form anzugeben. Verwenden Sie reshape(), um in ein mehrdimensionales Array zu konvertieren.
print(np.arange(12).reshape(3, 4))# [[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]]print(np.arange(24).reshape(2, 3, 4))# [[[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]]# # [[12 13 14 15]# [16 17 18 19]# [20 21 22 23]]]
print(np.linspace(0, 10, 12).reshape(3, 4))# [[ 0. 0.90909091 1.81818182 2.72727273]# [ 3.63636364 4.54545455 5.45454545 6.36363636]# [ 7.27272727 8.18181818 9.09090909 10. ]]print(np.linspace(0, 10, 24).reshape(2, 3, 4))# [[[ 0. 0.43478261 0.86956522 1.30434783]# [ 1.73913043 2.17391304 2.60869565 3.04347826]# [ 3.47826087 3.91304348 4.34782609 4.7826087 ]]# # [[ 5.2173913 5.65217391 6.08695652 6.52173913]# [ 6.95652174 7.39130435 7.82608696 8.26086957]# [ 8.69565217 9.13043478 9.56521739 10. ]]]