Seite 1 von 1

aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Freitag 25. April 2014, 20:58
von möppi
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

Re: aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Freitag 25. April 2014, 21:07
von BlackJack
@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.

Re: aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Samstag 26. April 2014, 09:33
von möppi
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?

Re: aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Samstag 26. April 2014, 09:40
von BlackJack
@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`.

Re: aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Samstag 26. April 2014, 09:42
von möppi
Ich habe gerade type(a) eingegeben und das steht <type 'list'>. Vielleicht hast du eine andere Version als ich. Ich habe pythonxy 2.7

Re: aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Samstag 26. April 2014, 09:50
von BlackJack
@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.

Re: aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Samstag 26. April 2014, 09:52
von möppi
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

Re: aus einer komplexen Liste eine reelle Liste herstellen

Verfasst: Samstag 26. April 2014, 10:31
von BlackJack
@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.