Seite 1 von 1

Variable in Anhängigkeit eines Ergebnisses benennen

Verfasst: Samstag 14. Februar 2015, 19:20
von fluex
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

Re: Variable in Anhängigkeit eines Ergebnisses benennen

Verfasst: Samstag 14. Februar 2015, 19:54
von Sirius3
@fluex: Du solltest Dich bei den Python-Grundlagen einarbeiten, dort lernst Du Datenstrukturen wie Listen oder Dictionaries kennen.

Re: Variable in Anhängigkeit eines Ergebnisses benennen

Verfasst: Sonntag 15. Februar 2015, 12:35
von fluex
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...

Re: Variable in Anhängigkeit eines Ergebnisses benennen

Verfasst: Sonntag 15. Februar 2015, 12:38
von 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.

Re: Variable in Anhängigkeit eines Ergebnisses benennen

Verfasst: Sonntag 15. Februar 2015, 17:04
von mutetella
@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

Re: Variable in Anhängigkeit eines Ergebnisses benennen

Verfasst: Montag 16. Februar 2015, 20:25
von MagBen
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