Я пишу простую функцию в cython
с использованием numpy
, но кажется, что cython
производит тонну API при преобразовании в C++
. Может ли кто-нибудь помочь мне с ошибкой? Я больше ничего не нашел в документах cython
.Numpy in Cython, без улучшения
operations.pyx:
import numpy as np
cimport numpy as np
import cython
cimport cython
@cython.boundscheck(False)
@cython.wraparound(False)
@cython.nonecheck(False)
def diff(np.ndarray[np.float64_t, ndim=2] a,
np.ndarray[np.float64_t, ndim=2] b):
cdef int cols = 100
cdef int rows = 100
for _ in range(1000):
for i in range(rows):
b[i, 0] = (a[i, 1] - a[i, cols - 1])/2
for i in range(1, cols - 1):
b[:, i] = (a[:, i + 1] - a[:, i - 1])/2
for i in range(rows):
b[i, cols - 1] = (a[i, 0] - a[i, cols - 2])/2
return
я почти с той же скоростью в python
и cython
. Если я изменил выбор столбца (:
), он станет намного хуже (на 5 раз медленнее). может ли кто-нибудь показать мне, где может быть ошибка?
HTML вывода из cython
аннотации:
, пожалуйста, будьте конкретны, удалите уродливую фигуру и на самом деле введите/вставьте код, отформатируйте его и т. Д. Вы были достаточно долго, чтобы знать эти вещи. -1. – gg349
@ gg349, изображение представляет собой выход html cython. Код был добавлен в любом случае. – rowman
уточните пожалуйста – gg349