2015-01-29 22 views
6

Ich habe eine Zeichenfolge wie mystr = "100110" (die tatsächliche Größe ist viel größer) Ich möchte es in numpy Array wie mynumpy = [1, 0, 0, 1, 1, 0], mynumpy.shape = (6,0) konvertieren, ich weiß, dass numpy np.fromstring(mystr, dtype=int, sep='') noch das Problem ist, kann ich meine Zeichenfolge nicht teilen zu jeder Ziffer, so numpy nimmt es als eine Zahl. irgendeine Idee, wie man meine Zeichenkette in numpy Array umwandelt?Konvertieren Zeichenfolge in numpy Array

Antwort

16

list kann Ihnen dabei helfen.

import numpy as np 

mystr = "100110" 
print np.array(list(mystr)) 
# ['1' '0' '0' '1' '1' '0'] 

Wenn Sie statt Zeichenfolge Zahlen zu erhalten:

print np.array(list(mystr), dtype=int) 
# [1 0 0 1 1 0] 
10

Man könnte sie lesen als ASCII-Zeichen dann 48 subtrahieren (der ASCII-Wert von 0). Dies sollte der schnellste Weg für große Saiten sein.

>>> np.fromstring("100110", np.int8) - 48 
array([1, 0, 0, 1, 1, 0], dtype=int8) 

Alternativ können Sie den String in eine Liste von ganzen Zahlen konvertieren zuerst:

>>> np.array(map(int, "100110")) 
array([1, 0, 0, 1, 1, 0]) 

bearbeiten: Ich habe einige schnelle Timing und die erste Methode ist über 100x schneller als es um eine Umwandlung Liste zuerst.

Verwandte Themen