▷ numpy.arange(), linspace(): Erzeugen von ndarray mit gleichmäßig verteilten Werten | PythonSeminar (2024)

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. ]]]
▷ numpy.arange(), linspace(): Erzeugen von ndarray mit gleichmäßig verteilten Werten | PythonSeminar (2024)

References

Top Articles
Latest Posts
Article information

Author: Ray Christiansen

Last Updated:

Views: 5552

Rating: 4.9 / 5 (49 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Ray Christiansen

Birthday: 1998-05-04

Address: Apt. 814 34339 Sauer Islands, Hirtheville, GA 02446-8771

Phone: +337636892828

Job: Lead Hospitality Designer

Hobby: Urban exploration, Tai chi, Lockpicking, Fashion, Gunsmithing, Pottery, Geocaching

Introduction: My name is Ray Christiansen, I am a fair, good, cute, gentle, vast, glamorous, excited person who loves writing and wants to share my knowledge and understanding with you.