gì là khó hiểu ở đây là nếu bạn muốn tạo một mảng bạn sử dụngSự khác nhau giữa "số nhận dạng loại" và "loại" trong Cython là gì?
chunk = np.array ([[94.,3.],[44.,4.]], dtype=np.float64)
Nhưng nếu bạn muốn xác định loại bên trong một tài liệu tham khảo buffer
, bạn sử dụng
cdef func1 (np.ndarray[np.float64_t, ndim=2] A):
print A
Chú ý sự khác biệt giữa np.float64
và np.float64_t
.
đoán của tôi
Tôi đoán rằng một type identifier
là những gì được tạo ra một cách rõ ràng w/các Cython C-like typedef
cú pháp
ctypedef np.float64_t dtype_t
Nhưng NumPy type
chỉ là loại Python <type 'type'>
.
>>> type (np.float64)
<type 'type'>
Tài liệu gọn gàng trên dtype
s không giúp tôi. http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
Ok, có vẻ như hầu hết {float, int} {32,64} _t là loại C gấp đôi, mở rộng sang Python. Mặc dù tôi không thể tìm thấy đề cập đến các loại mà không có "_t", ít nhất là trong numpy.pxd – HeyWatchThis
Các loại không có "_t" xuất phát từ "nhập gọn gàng", không phải từ "cimport numpy". Nếu điều này là khó hiểu, bạn có thể làm "cimport numpy as cnp" để xem sự khác biệt. –
Có, tôi cũng đọc nó, duyệt qua [http://cython.readthedocs.org/en/latest/src/tutorial/numpy.html]. Bạn có thể thêm nó như một câu trả lời và tôi sẽ chấp nhận, hoặc cuối cùng tôi sẽ thêm nó. – HeyWatchThis