Variable in Anhängigkeit eines Ergebnisses benennen

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
fluex
User
Beiträge: 4
Registriert: Donnerstag 17. Mai 2012, 11:15

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
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@fluex: Du solltest Dich bei den Python-Grundlagen einarbeiten, dort lernst Du Datenstrukturen wie Listen oder Dictionaries kennen.
fluex
User
Beiträge: 4
Registriert: Donnerstag 17. Mai 2012, 11:15

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...
BlackJack

@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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@fluex
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
Dictionary:

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
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

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.
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?
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
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten