While Loop Werte ausgeben

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
El_Furachier
User
Beiträge: 5
Registriert: Mittwoch 19. Juni 2019, 08:21

Hallo miteinander,
ich habe ein relativ einfaches Problem, komme jedoch nicht auf die Lösung. Ich möchte gerne aus einer While Loop alle berechneten Werte in einem Array speichern. Anschließend möchte ich die Werte plotten. Dabei meine Laufvariable die mit Werten multipliziert wird um das Array a zu erhalten.

Code: Alles auswählen

i = 0
while i <= 5000:
    a= 50*(i/100)+3
    i += 1
Ich kann die einzelnen Werte von a zwar in der Schleife als Punkte plotten, möchte jedoch die Werte zunächst als Array im Variablenmanager zur Verfügung haben.

Code: Alles auswählen

import matplotlib.pyplot as plt 
i = 0
while i <= 5000:
    a= 50*(i/100)+3
    plt.plot(i,a,'o')
    i += 1
Danke für eure Unterstützung!
Bolitho
User
Beiträge: 219
Registriert: Donnerstag 21. Juli 2011, 07:01
Wohnort: Stade / Hamburg
Kontaktdaten:

Code: Alles auswählen

import matplotlib.pyplot as plt 

i = 0
werte = []     # Werteliste erstellen

while i <= 5000:
    a= 50*(i/100)+3
    werte.append(a)    # Wert zu Liste hinzufügen, erster Wert an Index 0, zweiter an Index 1 usw.
    plt.plot(i,a,'o')
    i += 1

print(a)    # Ausgabe der Liste
Habe ich das Problem richtig verstanden?
Bolitho
User
Beiträge: 219
Registriert: Donnerstag 21. Juli 2011, 07:01
Wohnort: Stade / Hamburg
Kontaktdaten:

was auch ginge:

Code: Alles auswählen

werte = []

for number in range(5001):
    werte.append(50*(number/100)+3)

print(werte)
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn man eine einfache Zählschleife hat, nimmt man statt while eine for-Schleife.
Die komplizierte Rechnung `50*(i/100)` ließe sich zu `i/2` vereinfachen.
Wenn man aber sowieso nur gleichmäßig aufsteigende Zahlen haben will, nimmt man linspace:

Code: Alles auswählen

werte = numpy.linspace(3, 2503, 5001)
El_Furachier
User
Beiträge: 5
Registriert: Mittwoch 19. Juni 2019, 08:21

Sirius3 hat geschrieben: Mittwoch 19. Juni 2019, 09:30 Wenn man eine einfache Zählschleife hat, nimmt man statt while eine for-Schleife.
Die komplizierte Rechnung `50*(i/100)` ließe sich zu `i/2` vereinfachen.
Wenn man aber sowieso nur gleichmäßig aufsteigende Zahlen haben will, nimmt man linspace:

Code: Alles auswählen

werte = numpy.linspace(3, 2503, 5001)
Danke für den Tipp, Meine tatsächliche Rechnung ist komplexer, ich habe hier nur ein vereinfachtes Beispiel herangezogen, um den Kern meiner Frage deutlich zu machen. :D
Bolitho
User
Beiträge: 219
Registriert: Donnerstag 21. Juli 2011, 07:01
Wohnort: Stade / Hamburg
Kontaktdaten:

hast du denn deine Antwort und kommst weiten?

Code: Alles auswählen

# Variante 3
werte = [x/2+3 for x in range(5001)]
print(werte)
El_Furachier
User
Beiträge: 5
Registriert: Mittwoch 19. Juni 2019, 08:21

Bolitho hat geschrieben: Mittwoch 19. Juni 2019, 09:42 hast du denn deine Antwort und kommst weiten?

Code: Alles auswählen

# Variante 3
werte = [x/2+3 for x in range(5001)]
print(werte)
Japp, habe es mit der for Variante realisiert.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@El_Furachier: auch deutlich komplexer geht mit numpy deutlich eleganter.
Antworten