So übergeben Sie ein numpy-Array mit Zeichenfolgentypen an eine Funktion in Cython
Übergabe eines numpy-Arrays von dtypenp.float64_t
funktioniert gut (siehe unten), aber ich kann keine String-Arrays übergeben.
Das funktioniert:
# 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)
Aber ich kann das nicht zum Laufen bringen: Ich kann die passenden 'Typenkennungen' für numpy string dtypes nicht finden.
# 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)
Der Kompilierungsfehler ist:
Error compiling Cython file:
------------------------------------------------------------
ctypedef np.string_t dtype_str_t
^
------------------------------------------------------------
cython_testing.pyx:9:9: 'string_t' is not a type identifier
AKTUALISIEREN
Per schaut durchnumpy.pxd
Ich sehe folgendesctypedef
Aussagen. Vielleicht reicht das, um zu sagen, dass ich es gebrauchen kannuint8_t
und so tun, als wäre alles normal, solange ich ein Casting machen kann?
ctypedef unsigned char npy_uint8
ctypedef npy_uint8 uint8_t
Ich muss nur sehen, wie teuer das Casting sein wird.