Como passar uma matriz numpy de tipos de seqüência de caracteres para uma função em Cython

Passando um array numpy de dtypenp.float64_t funciona bem (abaixo), mas não consigo passar matrizes de string.

Isso é o que funciona:

# cython_testing.pyx
import numpy as np
cimport numpy as np

ctypedef np.float64_t dtype_t 

cdef func1 (np.ndarray[dtype_t, ndim=2] A):
    print A 

def testing():
    chunk = np.array ( [[94.,3.],[44.,4.]], dtype=np.float64)

    func1 (chunk)

Mas eu não posso fazer isso funcionar: Não consigo encontrar os 'identificadores de tipo' correspondentes para tipos de string numpy.

# cython_testing.pyx
import numpy as np
cimport numpy as np

ctypedef np.string_t dtype_str_t 

cdef func1 (np.ndarray[dtype_str_t, ndim=2] A):
    print A 

def testing():
    chunk = np.array ( [['huh','yea'],['swell','ray']], dtype=np.string_)

    func1 (chunk)

O erro de compilação é:

Error compiling Cython file:
------------------------------------------------------------
ctypedef np.string_t dtype_str_t 
    ^
------------------------------------------------------------

cython_testing.pyx:9:9: 'string_t' is not a type identifier

ATUALIZAR

Olhando atravésnumpy.pxdEu vejo o seguintectypedef afirmações. Talvez seja o suficiente para dizer que eu posso usaruint8_t e fingir que tudo é normal, desde que eu possa fazer algum casting?

ctypedef unsigned char      npy_uint8
ctypedef npy_uint8      uint8_t

Só tem que ver o quão caro esse elenco será.

questionAnswers(2)

yourAnswerToTheQuestion