Jak przekazać tablicę liczbową typów łańcuchów do funkcji w Cythonie
Przekazywanie tablicy numpy z dtypenp.float64_t
działa dobrze (poniżej), ale nie mogę przekazać tablic ciągów.
To działa:
# 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)
Ale nie mogę zrobić tej pracy: Nie mogę znaleźć pasujących „identyfikatorów typów” dla dtypów ciągów liczbowych.
# 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)
Błąd kompilacji to:
Error compiling Cython file:
------------------------------------------------------------
ctypedef np.string_t dtype_str_t
^
------------------------------------------------------------
cython_testing.pyx:9:9: 'string_t' is not a type identifier
AKTUALIZACJA
Przez przeglądanienumpy.pxd
, Widzę co następujectypedef
sprawozdania. Może wystarczy powiedzieć, że mogę z niego skorzystaćuint8_t
i udawać, że wszystko jest normalne, o ile mogę zrobić trochę castingu?
ctypedef unsigned char npy_uint8
ctypedef npy_uint8 uint8_t
Wystarczy zobaczyć, jak kosztowne będzie to casting.