2015-01-29 29 views
6

Ho una stringa come mystr = "100110" (la dimensione reale è molto più grande) Voglio convertirlo in serie numpy come mynumpy = [1, 0, 0, 1, 1, 0], mynumpy.shape = (6,0), so che Numpy ha np.fromstring(mystr, dtype=int, sep='') ma il problema è che non riesco a dividere la mia stringa ad ogni cifra di esso, così numpy lo prende come un numero unico. qualche idea su come convertire la mia stringa in array numpy?Converti stringa in array numpy

risposta

16

list può aiutarti a farlo.

import numpy as np 

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

Se si desidera ottenere i numeri invece di stringa:

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

Si potrebbe leggere loro come caratteri ASCII quindi sottrarre 48 (il valore ASCII 0). Questo dovrebbe essere il modo più veloce per le grandi stringhe.

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

alternativa, è possibile convertire la stringa in una lista di interi prima:

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

Edit: Ho fatto qualche tempistica veloce e il primo metodo è più di 100 volte più veloce di convertirlo in un lista prima