dtype の numpy 配列を渡すと正常にnp.float64_t
動作しますが (以下)、文字列配列を渡すことはできません。
これが機能するものです:
# 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)
しかし、私はこれを機能させることが できません: numpy 文字列の dtype に一致する「型識別子」が見つかりません。
# 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)
コンパイルエラーは次のとおりです。
Error compiling Cython file:
------------------------------------------------------------
ctypedef np.string_t dtype_str_t
^
------------------------------------------------------------
cython_testing.pyx:9:9: 'string_t' is not a type identifier
アップデート
を調べるnumpy.pxd
と、次のctypedef
ステートメントが表示されます。たぶん、uint8_t
キャスティングができる限り、すべてを正常に使用してふりをすることができると言っても過言ではありませんか?
ctypedef unsigned char npy_uint8
ctypedef npy_uint8 uint8_t
そのキャスティングがどれほど高価になるかを確認する必要があります。