Generischer Programmaufbau

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
Sheldor
User
Beiträge: 2
Registriert: Donnerstag 9. Mai 2019, 09:51

Guten Tag zusammen,
ich sitze derzeit vor einem Problem dessen Lösung ich noch nicht herrausgefunden habe.

Und zwar möchte ich ein Programm so aufbauen, dass der Nutzer angiebt wieviele Datensätze das Programm verarbeiten soll. Ich habe Beispielsweise n Datensätze (Arrays) die jeweils die selbe Länge haben. Das Programm soll für n viele Datensätze funktionieren.

also ich habe zum Beispiel n Datensätze:

d1 = np.random.rand(100)*2.0-1.0
d2 = np.random.rand(100)*2.0-1.0
d3 = np.random.rand(100)*2.0-1.0
...
dn

Diese sollen in eine Funktion die normalerweise so aufgerufen wird ( erg = fkt(d1,d2,d3, ..., dn) )übergeben werden.

1. wie lässt sich das Programm so schreiben, dass es alle Datensätze einlesen kann?
2. wie lassen sich diese Datensätze an die Funktion übergeben?

Ich hoffe mein Problem ist verständlich.

Vielen Dank im Vorraus
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Du verwendest die falsche, nämlich gar keine, Datenstruktur.
Wenn man anfängt Variablennamen zu nummerieren, sollte man stattdessen etwas anderes verwenden. Statt jedes einzelne Element an einen Namen zu binden, sollten diese in einer Liste stehen. Dann erübrigen sich alle deine Fragen.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da du nicht zeigst, wie man auch nur einen einzigen Datensatz in dein Programm reinbekommt, kann man auch nicht so viel dazu sagen, wie man denn nun n davon einliest.

Bezueglich deines zweiten Problems: in Python kann man Funktionen die eine Anzahl von Parametern entgegen nehmen mit einem Container aufrufen:

Code: Alles auswählen

def f(a, b, c, d):
      print(a, b, c, d)

f(1, 2, 3, 4)

argumente = ['a', 'b', 'c', 'd']
f(*argumente)
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

1) mit einer For-Schleife

2) indem du in der Funktion die Variable als Parameter übergibst, z. B:

Code: Alles auswählen

def function(var1, var2, var_n):
. Allerdings reicht es auch, wenn du es z. B. so machst:

Code: Alles auswählen

def function_1():
       var1 = d1 
       function_2() #somit sind auch die Variablen der Funktion1 in Funktion2
Aber eigentlich packt man es als Parameter einer Funktion.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Sheldor: Du hast in Wirklichkeit keine n-Datensätze, sondern einen Datensatz der Dimension n x 100, das ist in Numpy einfach ein Array, das dann als ein Array auch an Funktionen übergeben werden kann.

Code: Alles auswählen

d = np.random.rand(n, 100) * 2.0 - 1.0
erg = f(d)
Sheldor
User
Beiträge: 2
Registriert: Donnerstag 9. Mai 2019, 09:51

Vielen Dank für die Hilfe, konnte damit mein Problem Lösen!
Hab einfach den numpy Array an die Funktion übergeben.
rbf = Rbf(*x, function='gaussian')
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

*-Magie sollte man nur einsetzen, wenn es wirklich nicht anders geht.
Antworten