Seite 1 von 1
nur die liste von range(n:m) aus array.array printen
Verfasst: Mittwoch 20. Mai 2009, 06:19
von feldmaus
Guten morgen liebe Sorgen,
wollte ich schon mal immer geschrieben haben.
also ich habe ein array.array aus dessen Daten
ich eine Liste erzeugen will. Nun dachte ich das
folgender code dazu reicht:
Code: Alles auswählen
self.f_peaks_1 = file('../../../peakdetektor1.hex','rb')
self.a_p_1 = array.array('b')
self.a_p_1.fromfile(self.f_peaks_1,nitems)
print self.a_p_1[n:m]
Ich bekomme dann aber sowas wie,
array('b', [0, 0, 0, 0, 0, 0, 0, 0, 0])
Es muss doch möglich sein nur die Liste,
[0, 0, 0, 0, 0, 0, 0, 0, 0]
zu printen, ohne das array('b',...)
Wie komme ich an die Liste ran. Eine for Schleife
wäre mir nicht so recht, da dies viel Rechenzeit kosten
würde. Also ich habe mehrere Millionen Einträge.
Ich benötige aber immer nur einen Teil der binären
Werte.
Grüße Markus
Verfasst: Mittwoch 20. Mai 2009, 07:13
von feldmaus
Ich Idi{o,t} habe die 'tolist()' Funktion übersehen.
Damit wandel ich das array in eine Liste, deren Elemente ich dann
printen kann wie ich es wollte.
Grüße Markus
Verfasst: Mittwoch 20. Mai 2009, 08:23
von BlackJack
Wenn es Dir nur um die Darstellung als Liste geht, ist eine ``for``-Schleife die bessere Lösung, bzw. `str.join()` und ein Generatorausdruck.
Wobei Listen IMHO sowieso höchstens zur Fehlersuche ausgegeben werden sollten und nicht als reguläre Ausgabe eines Programms.
Letztlich wolltest Du doch die Daten zum Plotten haben, da ist doch eher so etwas wie eine CSV-Datei gefragt.
Verfasst: Mittwoch 20. Mai 2009, 11:17
von feldmaus
BlackJack hat geschrieben:Wenn es Dir nur um die Darstellung als Liste geht, ist eine ``for``-Schleife die bessere Lösung, bzw. `str.join()` und ein Generatorausdruck.
Wobei Listen IMHO sowieso höchstens zur Fehlersuche ausgegeben werden sollten und nicht als reguläre Ausgabe eines Programms.
Letztlich wolltest Du doch die Daten zum Plotten haben, da ist doch eher so etwas wie eine CSV-Datei gefragt.
Also ich habe jetzt <numpy.fromfile> um ein Array aus einer binären Datei zu erstellen.
War doch eine schnelle Lösung oder ?
Na ja ich kann den Datentyp der Dateien nicht wirklich beeinflußen.
Die Daten liegen nun mal binär vor. Damit muss ich dann irgendwie
auskommen.
Danke für die Antworten und Grüße Markus
Verfasst: Mittwoch 20. Mai 2009, 12:00
von CM
Oh, sehe gerade, dass Du auf fromfile und binäre Dateien selber gekommen bist. Vielleicht etwas viele Threads auf einmal?
Interessant für Dich ist vielleicht noch das:
http://docs.scipy.org/doc/
In der Anleitung für numpy ist das Slicing detailliert erklärt.
HTH
Christian
Verfasst: Mittwoch 20. Mai 2009, 12:36
von feldmaus
Eine derzeitige Lösung wäre tolist(), damit speichert man die Daten
in einer Liste ab. Ab dann kann man gemütlich slicen.
Ich habe mir numpy empfehlen lassen. Dies spart einen Zwischenschritt,
und zwar das tolist(). Die numpy Arrays liegen dann gleich als Listen vor.
was bei array.array nicht der Fall ist.
Grüße Markus
Verfasst: Mittwoch 20. Mai 2009, 12:56
von BlackJack
@feldmann_markus: Du solltest Dich noch mal mit Datentypen auseinandersetzen. Man kann sowohl `array.array`, `numpy.array`, als auch `list` "slicen". Und `numpy.array`\s sind keine Listen, sondern eben `numpy.array`\s.
Verfasst: Mittwoch 20. Mai 2009, 14:25
von feldmaus
BlackJack hat geschrieben:@feldmann_markus: Du solltest Dich noch mal mit Datentypen auseinandersetzen. Man kann sowohl `array.array`, `numpy.array`, als auch `list` "slicen". Und `numpy.array`\s sind keine Listen, sondern eben `numpy.array`\s.
ich werde mich auf jeden Fall nochmal damit auseinandersetzen.

Numpy.arrays können halt so verwendet werden wie listen.
Array.array dagegen nicht.
Verfasst: Mittwoch 20. Mai 2009, 14:30
von BlackJack
@feldmann_markus: Genau das ist falsch! Man kann `array.array` in gewissen Grenzen genauso verwenden wie Listen. Andererseits sind es keine Listen. Genauso wenig wie `numpy.array` nicht alle Eigenschaften von Listen besitzen.
Verfasst: Mittwoch 20. Mai 2009, 15:27
von CM
Genau! *jedeswortvonblackjackunterstreichend* Ein nennenswerter Unterschied ist noch, dass numpy.ndarrays / .arrays zusätzliche Slicing-Möglichkeiten bieten. edit: Und genau deshalb habe ich meinen vorigen Post hier verfasst und nicht etwa weil Listen kein Slicing erlauben würden.
Gruß,
Christian
Verfasst: Mittwoch 20. Mai 2009, 17:29
von Leonidas
@feldmann_markus: Bitte die Forenregeln lesen, speziell Punkt 3.5, ich mag nicht aus jedem deiner Threads das "[gelöst]" rauszueditieren.