Hi Leute,
ich berechne das Ergebnis einer Sinusfunktion f(x) mit Hilfe einer Schleife, welche immer einen Wert x hochzählt. Unabhängig davon ist jedem x ein fester Wert zugeordnet.
Ich suche nun eine Lösung, alle Werte(x) eines f(x) zu addieren.
Beispiel:
x | Fkt. f(x) | Wert(x)
--|-----------|---------
1 | f(1) = 2 | 100
2 | f(2) = 3 | 200
3 | f(3) = 4 | 300
4 | f(4) = 3 | 300
5 | f(5) = 2 | 200
Ich würde nun gerne alle Werte von beispielsweise f(x)=3 addieren. In diesem Fall wäre das f(2)=3 und f(4)=3. Die dazugehören Werte sind f(2)=200 und f(4)=300. Das Ergebnis wäre 500.
Ich suche nun eine Möglichkeit, die Summe aller Werte für jedes n in f(x)= n zu bilden.
Meine Idee war, für jedes n eine Variable v1, v2, v3, v4, v5 zu erstellen und bei jedem f(x) jedes mal den Wert zu der Variable hinzuzähle.
Allerdings müsste ich hierfür jede Variable in abhängigkeit von f(x) aufrufen. Ich habe bis jetzt leider keine Möglichkeit gefunden, die Bezeichnung einer Variable aus v und dem jeweiligen f(x) zu bilden.
Konkret würde das so aussehen
bei x=x: v+f(x) = Wert(x)
bei x=1: v2=100
bei x=2: v3=200
bei x=3: v4=300
bei x=4: v3=200+300=700
bei x=5: v2=100+200=300
Hat jemand von Euch vielleicht eine Idee wie sich soetwas umsetzen lässt? Es handelt sich bei mir um 500.000 Datensätze mit x=50.
Viele Grüße,
fluex
Variable in Anhängigkeit eines Ergebnisses benennen
Danke für Deine Rückmeldung.
Mir sind die Grundlagen von Python bekannt. Das Problem ist Teil eines PYthon-Skripts mit bisher 200 Zeilen. Wahrscheinlich habe ich die Problematik nicht gut genug beschrieben.
Grundsätzlich suche ich eine Möglichkeit, Variablen in Abhängigkeit von variierenden Zahlen aufzurufen.
Vielleicht hat ja noch jemand eine Idee...
Mir sind die Grundlagen von Python bekannt. Das Problem ist Teil eines PYthon-Skripts mit bisher 200 Zeilen. Wahrscheinlich habe ich die Problematik nicht gut genug beschrieben.
Grundsätzlich suche ich eine Möglichkeit, Variablen in Abhängigkeit von variierenden Zahlen aufzurufen.
Vielleicht hat ja noch jemand eine Idee...
@fluex: Die Idee wurde schon genannt: Datenstrukturen wie Listen oder Wörterbücher. Überlege Dir wie Du das damit lösen kannst und vergiss Deinen Ansatz.
@fluex
Vielleicht hilft Dir ja mal ein Beispiel, um Dir z. B. die Verwendung einer Liste vorstellen zu können:Dictionary:
mutetella
Vielleicht hilft Dir ja mal ein Beispiel, um Dir z. B. die Verwendung einer Liste vorstellen zu können:
Code: Alles auswählen
>>> value_01 = 10
>>> value_02 = 20
>>> value_03 = 30
>>> values = [value_01, value_02, value_03]
>>> values
[10, 20, 30]
>>> values[0]
10
>>> values[1]
20
>>> values[2]
30
>>> sum(values)
60
Code: Alles auswählen
>>> values = dict()
>>> values['value_01'] = 10
>>> values['value_02'] = 20
>>> values['value_03'] = 30
>>> values
{'value_02': 20, 'value_03': 30, 'value_01': 10}
>>> values['value_01']
10
>>> values['value_02']
20
>>> values['value_03']
30
>>> values.items()
[('value_02', 20), ('value_03', 30), ('value_01', 10)]
>>> values.values()
[20, 30, 10]
>>> sum(values.values())
60
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
Eigentlich keine große Sache. Dein Rechner mit 3GHz kann schließlich 3 Milliarden Rechenoperationen pro Sekunde bewältigen, was sind da eine halbe Million Zahlen?fluex hat geschrieben:Hat jemand von Euch vielleicht eine Idee wie sich soetwas umsetzen lässt? Es handelt sich bei mir um 500.000 Datensätze mit x=50.
Um an diese Rechenpower ranzukommen hast Du mit Python zwei Möglichkeiten:
a) Datenbank
b) Numpy
Mit Numpy könnte es z.B. so aussehen:
Code: Alles auswählen
import numpy as np
x = np.arange(1,6)
f = np.array([2,3,4,3,2])
w = np.array([100, 200, 300, 300, 200])
# alle w-Werte an den Stellen, an denen f==3 gilt
print( w[f==3]) # [200 300]
# die Summe davon
print(w[f==3].sum()) # 500
# fuer jedes n
for n in x:
print("%i: %i" % (n, w[f==n].sum()))
# 1: 0
# 2: 300
# 3: 500
# 4: 300
# 5: 0