aus einer komplexen Liste eine reelle Liste herstellen

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
möppi
User
Beiträge: 39
Registriert: Samstag 29. März 2014, 09:18

Freitag 25. April 2014, 20:58

Hi Leute,

Ich benutze numpy und habe eine Liste aus komplexen Zahlen z.B
a=[(1+3j),(3-2j),(1.5+3.12j)]
und möchte daraus eine Liste aus reellen bzw. imaginären Zahlen herstellen, ohne eine Schleife zu verwenden. D.h
mache aus a:

a_reel=[1,3,1.5]
a_imaginär=[3,-2,3.12]

Ich dachte an sowas wie
a_reel=a.real
a_imag=a.imag

aber das funktioniert nicht.

Ich suche jetzt schon seit einer Ewigkeit im Internet, leider ohne Erfolg. Kann mir jemand helfen??

Gruß
möppi
BlackJack

Freitag 25. April 2014, 21:07

@möppi: Das funktioniert nicht weil Listen keine solchen Attribute haben. Ich sehe jetzt auch nicht wo Du Numpy benutzt‽ Denn auf Numpy-Arrays mit komplexen Zahlen gäbe es die Attribute. Also ist die Frage warum die Werte in einer Liste stehen.
möppi
User
Beiträge: 39
Registriert: Samstag 29. März 2014, 09:18

Samstag 26. April 2014, 09:33

Da steht zumindest "import numpy". Ich habe eine Funktion die Werte aus einer Datei einliest und in der Konsole wird das Array (oder Liste) so returned wie ich es geschrieben hatte. Ist es vielleicht keine Liste? Nehmen wir an es ist ein numpy array. Wie wäre das Format und wie könnte man die Trennung durchführen?
BlackJack

Samstag 26. April 2014, 09:40

@möppi: Schau doch einfach mal mit der `type()`-Funktion nach welchen Typ das Objekt hat. Wenn es ein Array mit komplexen Zahlen wäre, dann hätte es die Attribute `real` und `imag`.
möppi
User
Beiträge: 39
Registriert: Samstag 29. März 2014, 09:18

Samstag 26. April 2014, 09:42

Ich habe gerade type(a) eingegeben und das steht <type 'list'>. Vielleicht hast du eine andere Version als ich. Ich habe pythonxy 2.7
BlackJack

Samstag 26. April 2014, 09:50

@möppi: Was soll denn das mit der Python-Version zu tun haben? Du hast da offensichtlich eine Liste vorliegen. Ein ``import numpy`` macht doch nicht auf magische Weise aus allen Listen Arrays. Das sind unterschiedliche Datentypen mit unterschiedlichen Methoden und Operationen, die sind nicht in jedem Fall einfach so austauschbar.

Wenn das eine Liste ist, dann musst Du halt eine Schleife schreiben um zwei Listen mit jeweils dem reellen und dem imaginären Teil der Elemente zu füllen. Oder du erstellst ein Numpy-Array aus der Liste und hast dort dann die beiden Attribute `imag` und `real` um aus diesem Array jeweils Arrays mit den jeweiligen Bestandteilen der komplexen Zahlen zu erstellen.
möppi
User
Beiträge: 39
Registriert: Samstag 29. März 2014, 09:18

Samstag 26. April 2014, 09:52

Ich kann jedoch auf einzelne Elemente der Liste (anscheinend doch kein numpy array) zugreifen. z.B

a[0].imag
>>3

Ich könnte auch eine Schleife machen. Das Problem ist, dass ich unterschiedlich lange (und riesige) Datensätze habe. Gibt es eine Möglichkeit, eine Schleife zu implementieren, ohne zu wissen, wo der Datensatz abricht. Z.B

a(liste mit komplexen zahlen)=funktion(Daten) (funktioniert)

Schleife von j=0 bis Ende vom Array (Ende nicht bekannt):
a_reel=a[j].real
a_imag=a[j].imag
BlackJack

Samstag 26. April 2014, 10:31

@möppi: Du möchtest ganz dringend mal ein Grundlagentutorial zu Python durcharbeiten. Listen sind einer der Grunddatentypen in Python, dessen Operationen man kennen sollte.

Und wenn man mit Numpy-Arrays arbeiten will oder muss, dann sollte man sich auch in Numpy mal so ganz grundsätzlich einarbeiten. In der Dokumentation von Numpy gibt es auch ein Tutorial.
Antworten