2016-01-04 8 views
6

Ich verstehe nicht ganz, was ist der Unterschied zwischen numpy. {Typename}, numpy.npy_ {typename} und numpy. {Typename} _t, wenn ich sie aus Cython-Code verwende?Numpy-Typen für Cython-Benutzer

das heißt, was ist der Unterschied in dieser Art:

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

np.float32 
np.npy_float32 
np.float32_t 

Wie ich es verstehe jetzt: erste Typ ist dynamisch, das heißt Cython wird einige Code generieren Größe dieses Typs zur Laufzeit zu erkennen. Zwei andere Typen sind statisch, d. H. Code, der sie verwendet, wird mit vordefinierten Größen jedes Typs kompiliert. Bitte korrigieren Sie mich.

Zusätzliche Link: https://docs.scipy.org/doc/numpy/reference/c-api.dtype.html#c-type-names

Antwort

6

np.float32 ist NumPy des TypeDescriptor, das ein Python-Objekt ist, die abgefragt werden können und übergeben NumPy Arrays zu konstruieren, wie in Python.

np.npy_float32 ist ein C-Typ, der überall dort verwendet werden kann, wo ein C-Typ benötigt wird, z.B.

cdef np.npy_float32 x = 1.902 
cdef np.ndarray[np.npy_float32, ndim=2] A = np.zeros((3, 4), dtype=np.float32) 

np.float32_t ist einfach ein typedef von np.npy_float32, die als Abkürzung verwendet werden kann.

Verwandte Themen