nur die liste von range(n:m) aus array.array printen

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
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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
Zuletzt geändert von feldmaus am Mittwoch 20. Mai 2009, 12:37, insgesamt 1-mal geändert.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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
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.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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
Zuletzt geändert von feldmaus am Mittwoch 20. Mai 2009, 14:23, insgesamt 1-mal geändert.
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.
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

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.
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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

@feldmann_markus: Bitte die Forenregeln lesen, speziell Punkt 3.5, ich mag nicht aus jedem deiner Threads das "[gelöst]" rauszueditieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten