Python: ¿puede funcionar numba con matrices de cadenas en modo nopython?

Estoy usando pandas 0.16.2, numpy 1.9.2 y numba 0.20.

¿Hay alguna forma de que numba admita matrices de cadenas en el modo nopython? Alternativamente, ¿podría de alguna manera convertir cadenas a números que numba reconocería?

Tengo que ejecutar ciertos bucles en una matriz de cadenas (una columna de un dataframe de pandas); si pudiera usar numba el código sería sustancialmente más rápido.

He dado este pequeño ejemplo para mostrar lo que quiero decir:

import numpy as np import numba x=np.array(['some','text','this','is']) @numba.jit(nopython=True) def numba_str(txt): x=0 for i in xrange(txt.size): if txt[i]=='text': x += 1 return x print numba_str(x) 

El error que recibo es:

 Failed at nopython (nopython frontend) Undeclared ==([char x 4], str) 

¡Gracias!

Las cadenas aún no son compatibles con Numba (a partir de la versión 20.0). En realidad, “las secuencias de caracteres son compatibles, pero no hay operaciones disponibles en ellas” .

De hecho, una posible solución es interpretar los caracteres como números. Para los caracteres ASCII esto es sencillo, consulte las funciones ord y chr Python. Sin embargo, ya para su ejemplo mínimo, termina con funciones que son mucho menos legibles:

 import numpy as np import numba x=np.array(['some','text','this','is']) @numba.jit(nopython=True) def numba_str(txt): x=0 for i in xrange(txt.shape[0]): if (txt[i,0]==116 and # 't' txt[i,1]==101 and # 'e' txt[i,2]==120 and # 'x' txt[i,3]==116): # 't' x += 1 return x print numba_str(x.view(np.uint8).reshape(-1, x.itemsize))