Lesen und fügen Sie den letzten Wert aus einem aus einer Textdatei gezogenen Array hinzu

Dies ist ein Beispiel: Ich habe vier Zeitperioden, die als t = 0, t = 1, t = 2, t = 3 markiert sind. Jedes Mal hat ein Wert mit ihm verbunden wie unten gezeigt:

Das Format der Textdatei lautet wie folgt:
0,213
1, -999
2,456
3, -1100

Grundsätzlich ist jeder Wert in einer Periode. Was ich tun möchte, ist, diese Werte zu verwenden und alle Werte zu t = 0 zu erhalten. Wenn ich eine Zeitleiste zeichne, dann hätte ich zwei Werte auf dem positiven bei t = 0 und t = 2 und zwei Werte auf dem negativen bei t = 1 und t = 3.

Nun möchte ich von der rechten Seite der Zeitleiste nach links gehen, um zu t = 0 zu gelangen. Also, bei t = 3, was der letzte Wert in der Timeline ist, muss zwei Einheiten nach links verschoben werden, um dem Wert von t = 1 hinzugefügt zu werden, da sie beide auf der negativen Seite sind, dann verschieben Sie diesen Wert dann von t = 1 bis t = 0. Ähnlich muss ich das für die positive Seite machen.

Im Folgenden ist mein Code. Es kann nicht richtig sein, aber ich versuche:

import numpy as np workspace = 'C:\\Users\MM\Desktop' time= np.loadtxt(workspace +'\\Assign1.txt', delimiter = ',', usecols = range(1)) value = np.loadtxt(workspace +'\\Assign1.txt', delimiter = ',', usecols = range(1,2)) for x in time: x+1; print(x) for y in value: y+1 print(y[-1]) # I want this to read the last value(-1100) from the array # of the text file I have. I already got the values # pulled from the text file. It gives me an error. 

Wenn ich das an der Arbeit bekomme, dann, da dies ein negativer Wert ist, muss ich das dem vorherigen negativen Wert hinzufügen und so weiter.

Der Inhalt, den ich habe, ist nur ein Beispiel. Es könnte mehr oder weniger als 4 Zeitwerte geben, und die negativen Werte und positiven Werte könnten irgendwo auf der Zeitachse liegen. Das Ziel ist es, die negativen und positiven Werte in t = 0 zu erhalten und zu sehen, ob die negativen Werte den positiven Werten entsprechen oder nicht. Die Werte müssen als gleich angesehen werden, wenn einer der Werte um 1, aber kleiner als oder gleich 15 größer ist.

One Solution collect form web for “Lesen und fügen Sie den letzten Wert aus einem aus einer Textdatei gezogenen Array hinzu”

Algebraisch, was du beschreibst, ist viel einfacher als der Prozess, den du angelegt hast. Sie addieren alle Zahlen und sehen, ob das Ergebnis im Bereich [-15, 15] liegt. Ersetzen Sie Ihre beiden beabsichtigten Schleifen durch diese bedingte Kontrolle:

 if -15 <= sum(value) <= 15: # Here, insert the code for matching stuff. 

Also, warum Ihr gegebener Code fehlschlägt … die Schleifen sind nicht korrekt. Ich bin mir nicht sicher, was du mit den beiden +1 Ausdrücken zu tun versuchst. Sie beeinflussen den Datenfluss in keiner Weise, weil Sie den Wert nicht speichern.

Die zweite Schleife ist verwirrt. In jeder Iteration nimmst du einen einzigen Wert aus der Liste. Ihre Druckaussage behandelt diesen einzelnen Wert, als ob es auch eine Liste wäre (Sie können eine Liste von Listen in Python machen, aber dieses Programm macht das nicht). Wenn du versuchst, auf das letzte Element einer einzelnen Integer zuzugreifen, informiert Python Sie über die Verwirrung.

Um den letzten Wert der Liste zu drucken, verwenden Sie einfach den Druckwert [-1] ; Nicht durch die ganze Liste iterieren, um das letzte Element zu finden.


Das heißt, wir haben jetzt das ursprüngliche Problem: Wie man die negativen und positiven Werte mit dem Algorithmus, den du beschreibst, summierst . Sie müssen Ihre Listen in umgekehrter Reihenfolge ausführen. Ich mache das in zwei Loops, je eine für Positive und Negative:

 time = range(10) value = [213, -999, 456, -1100, -16, 5, 42, -80, 9, 10] last_neg = 0 for i in range(len(value)-1, -1, -1): # Go through the list in reverse order if value[i] < 0: value[i] += last_neg last_neg = value[i] last_pos = 0 for i in range(len(value)-1, -1, -1): # Go through the list in reverse order if value[i] > 0: value[i] += last_pos last_pos = value[i] print "pos & neg sums", value[0], value[1] value[0] += value[1] print "grand sum", value[0] print "Check the summation:", value 

Ausgabe:

 pos & neg sums 735 -2195 grand sum -1460 Check the summation: [-1460, -2195, 522, -1196, -96, 66, 61, -80, 19, 10] 
Python ist die beste Programmiersprache der Welt.