Seite 1 von 1

Generischer Programmaufbau

Verfasst: Donnerstag 9. Mai 2019, 10:04
von Sheldor
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

Re: Generischer Programmaufbau

Verfasst: Donnerstag 9. Mai 2019, 10:19
von sparrow
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.

Re: Generischer Programmaufbau

Verfasst: Donnerstag 9. Mai 2019, 10:21
von __deets__
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)

Re: Generischer Programmaufbau

Verfasst: Donnerstag 9. Mai 2019, 10:24
von xXSkyWalkerXx1
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.

Re: Generischer Programmaufbau

Verfasst: Donnerstag 9. Mai 2019, 10:37
von Sirius3
@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)

Re: Generischer Programmaufbau

Verfasst: Mittwoch 15. Mai 2019, 15:10
von Sheldor
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')

Re: Generischer Programmaufbau

Verfasst: Mittwoch 15. Mai 2019, 15:40
von Sirius3
*-Magie sollte man nur einsetzen, wenn es wirklich nicht anders geht.