2016-08-16 2 views
2

Ich habe eine Liste der Index des Elements eines BitArray. Ich möchte die Elemente extrahieren.Extrahieren von Element aus einem Bitarray mit Indizes in einer Liste

Wenn ich auf diesem einfachen Beispiel versuchen, die klassische Methode

from bitstring import BitArray 
barray = BitArray('0b101111011110101') 
index = [1,2,3,4] 
barray[index] 

ich den Fehler bekam

IndexError: Slice index out of range. 

Es ist das gleiche, wenn ich als Index ein Tupel oder ein numpy Array. Ich habe mir die Dokumentation und die Hauptfunktion angeschaut, es ist komisch für mich, aber es scheint unmöglich und ich weiß nicht warum.

Es scheint, dass die einzige Lösung ist, eine Schleife zu machen, und ich möchte es für die Geschwindigkeit vermeiden.

Hat jemand eine Idee?

Antwort

0

Nun könnte man np.take verwenden diese als NumPy boolean-Array zu extrahieren -

np.take(barray,index) 

Probelauf -

In [156]: barray 
Out[156]: BitArray('0b101111011110101') 

In [157]: index 
Out[157]: [1, 2, 3, 4] 

In [158]: np.take(barray,index) 
Out[158]: array([False, True, True, True], dtype=bool) 
+0

Ok auf dem Prinzip, aber ich habe ein neues Problem: meine Datei zu ist groß für numpy.take (2GB), habe ich einen Speicherfehler –

Verwandte Themen