Verändlerliche Listen addieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@BlackJack; ich würde ja 0 nehmen, dann spart man sich die Gedanken darüber, wie groß denn nun das Array tatsächlich sein muß.
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

BlackJack hat geschrieben:@Zizibee: Ich würde ja `numpy.zeros` verwenden, dann spart man sich die Listen mit den 16K Nullen als Zwischenschritt. :-)
Das kannst ich noch nicht, danke. Aber wie kann ich damit den Zwischenschritt sparen?
Macht numpy.zeros(5) nicht das gleiche wie numpy.array(5*[0])?
Sirius3 hat geschrieben:ich würde ja 0 nehmen, dann spart man sich die Gedanken darüber, wie groß denn nun das Array tatsächlich sein muß.
Würdest du das evtl. noch etwas genauer erklären? Muss ich die Größe des Arrays nicht immer definieren, damit es anschließend mit der Addition funktioniert?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Zizibee hat geschrieben:Muss ich die Größe des Arrays nicht immer definieren, damit es anschließend mit der Addition funktioniert?
Am besten einfach ausprobieren.
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

@Sirius3:
Das hatte ich natürlich vorher ausprobiert, bekam aber immer einen Fehler in der Art:
Traceback (most recent call last):
File "python", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (5,) (0,)

Jetzt hat es aber "plötzlich" doch geklappt, danke. :oops:
BlackJack

@Zizibee: Bei ``array(5*[0])`` wird zuerst eine Python-Liste mit 5 Python-`int`-Werten erstellt. Diese Liste wird `array()` als Argument übergeben. Das schaut sich jedes Element der Liste an welchen Typ das hat um den `dtype` für das `array` zu ermitteln. Dann schaut es sich die Länge der Liste an um den Speicher für die Daten zu belegen. Dann wird wieder die Liste durchgegangen und jeder Wert wird in den `dtype` des Arrays umgewandelt und in dem Array gespeichert.

Bei `zeros(5)` wird Speicher für 5 Elemente vom `dtype` `float` belegt. Und dieser Speicher wird mit 5 Nullwerten initialisiert.
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

@BlackJack:
Und wieder einmal: vielen Dank für die Erklärung, ich habe wieder was dazu gelernt.
Antworten