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
aus einer komplexen Liste eine reelle Liste herstellen
@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.
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?
@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: 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.
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.
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
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
@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.
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.