Arrays durchlaufen

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.
Antworten
sausage
User
Beiträge: 8
Registriert: Donnerstag 22. Mai 2014, 12:53

Mittwoch 28. Mai 2014, 16:58

Hallo,
mein Problem scheint einfach zu sein, aber ich kriege es als Pythonneuling leider nicht hin und bin für eure Hilfe sehr dankbar.

Ich habe ein Array von Typ float64 und Länge über 400. Dieser Array enthält positive und negative Zahlen und auch Nullen. Diesen Array möchte ich so durchgehen, dass ich positive, negative und Nullen getrennt in ein Array speichere.

Wenn ich z.B. für positive Zahlen versuche,

Code: Alles auswählen

for i in gross_array:
    if i>0:
        array_positiv= i
        print array_positiv
dann wird irgendeine, aber nur eine Zahl in array_positiv gespeichert.

Was mache ich falsch, wie sollte es richtig aussehen?

vielen Dank im Voraus!
BlackJack

Mittwoch 28. Mai 2014, 17:26

@sausage: Du solltest vielleicht mal ein Grundlagentutorial zu Python durcharbeiten, und danach dann das von Numpy. Das ist nämlich grundsätzlich eine Frage die sich dann nicht stellen würde.
sausage
User
Beiträge: 8
Registriert: Donnerstag 22. Mai 2014, 12:53

Donnerstag 29. Mai 2014, 08:31

Ein Tutorium hab ich natürlich gemacht, aber diese Indexing habe ich nicht verstanden. vor allem wenn ich diesen Code im Konsole eingebe kommen die ganzen positiven Zahlen raus, aber in array_positiv wird nur eine einzige Zahl gespeichert. Das kann ich mir nicht erklären.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Donnerstag 29. Mai 2014, 08:38

Warum glaubst du denn, dass da mehr als eine Zahl gespeichert sein sollte?

Code: Alles auswählen

x = 1
x = 2
print x # was erwartest du hier
Also was du falsch machst ist, dass du nur einer Variable einen neuen Wert zuweist. Du willst aber einer liste einen neuen Wert anhängen.
0x68
User
Beiträge: 1
Registriert: Donnerstag 29. Mai 2014, 08:00

Donnerstag 29. Mai 2014, 08:39

Weil du das "Array" als Variable behandelst.
So hast du immer den letzten Wert der Itteration in der Variable.
sausage
User
Beiträge: 8
Registriert: Donnerstag 22. Mai 2014, 12:53

Donnerstag 29. Mai 2014, 09:31

@alle

naja, wenn ich das folgende mache

Code: Alles auswählen

a= ([1,2,3,4, 14,21,9,0,-1,4,-5,-22,3,0,-4,-5])
for i in a:
    if i>0:
        arr=[]
        arr.append(i)
    print arr    
kommt

Code: Alles auswählen

[1]
[2]
[3]
[4]
[14]
[21]
[9]
[9]
[9]
[4]
[4]
[4]
[3]
[3]
[3]
[3]
raus. Also kann ich den Befehl append() auch nicht benutzen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Donnerstag 29. Mai 2014, 09:34

Was glaubst Du passiert in Zeile 4?

(Im übrigen sind das keine Arrays sondern Listen - Arrays gibt es in Python auch, aber die verwendest Du hier nicht!)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
sausage
User
Beiträge: 8
Registriert: Donnerstag 22. Mai 2014, 12:53

Donnerstag 29. Mai 2014, 09:39

mit Zeile 4 lege ich ein leeres Array, wenn ich arr= array([]) oder eine Liste wenn ich arr=[] schreibe. An diesem leeren Array oder dieser leeren Liste versuche ich meine positiven Elemente anzuhängen.
sausage
User
Beiträge: 8
Registriert: Donnerstag 22. Mai 2014, 12:53

Donnerstag 29. Mai 2014, 09:46

Könnt ihr mir bitte in 'Python-Sprache' helfen? Ich komme einfach nicht auf die Lösung :(
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Donnerstag 29. Mai 2014, 09:46

Dann geh das mal auf einem Blatt Papier mit dem Stift durch! Nach dem zweiten Element sollte Dir klar sein, dass da etwas nicht so klappt, wie Du Dir das denkst! ;-)

Also schreibe Dir für die Schleife links einfach "for" hin und daneben eben "i= " mit dem aktuellen Wert. Danach für das if die tatsächlichen Werte und daneben ob das nun ``true`` oder ``false`` ergibt. Wenn das ``true ist, dann schreibe genau auf, was dann passiert.

Danach machst Du mit dem nächsten Element weiter usw.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
pillmuncher
User
Beiträge: 1165
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Donnerstag 29. Mai 2014, 10:38

sausage hat geschrieben:

Code: Alles auswählen

a= ([1,2,3,4, 14,21,9,0,-1,4,-5,-22,3,0,-4,-5])
for i in a:
    if i>0:
        arr=[]
        arr.append(i)
    print arr    
Mal eine Variation darüber, in Pseudocode:

Code: Alles auswählen

Personen = ['anna', 'bernd', 'carla', 'dieter']
für jede Person in Personen:
    Person hält sich ein Taxi an
    Person steigt in das Taxi
Wieviele Taxis werden da angehalten und wieviele Personen sitzen anschließend in jedem Taxi? Und wieviele hier?

Code: Alles auswählen

Personen = ['anna', 'bernd', 'carla', 'dieter']
Personen halten sich zusammen ein Taxi an
für jede Person in Personen:
    Person steigt in das Taxi
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Donnerstag 29. Mai 2014, 10:42

Nette Analogie... für das Problem oben könnte man das noch um folgendes erweitern:

Code: Alles auswählen

Personen = ['anna', 'bernd', 'carla', 'dieter']
Personen halten sich zwei Taxis an
für jede Person in Personen:
    wenn Person ist weiblich:
        Person steigt in das eine Taxi
    sonst
        Person steigt in das andere Taxi
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten