Как передать пустой массив строковых типов в функцию в Cython

Передача массива ntypenp.float64_t работает нормально (ниже), но я не могу передать строковые массивы.

This is what works :

# 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)

But I can't make this work: Я не могу найти подходящие идентификаторы типов. для 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)

The compilation error is :

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

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

UPDATE

За просмотромnumpy.pxdЯ вижу следующееctypedef заявления. Может быть, этого достаточно, чтобы сказать, что я могу использоватьuint8_t и делать вид, что все нормально, пока я могу сделать кастинг?

ctypedef unsigned char      npy_uint8
ctypedef npy_uint8      uint8_t

Просто нужно посмотреть, насколько дорогим будет этот кастинг.

Ответы на вопрос(2)

Ваш ответ на вопрос