0
我正在測試基於第i個和第j個索引的總和是偶數還是奇數而改變numpy ndarray的Cython性能。與Python相比,Cython的速度僅僅提高了80%,這在速度上有點平庸。目前我已經沒有想法了。有什麼建議麼?使用Cython提高處理Numpy的速度ndarray
@Python:
def even_odd_function(matrix):
dim = matrix.shape[1]
for i in range(dim):
for j in range(dim):
if (i + j) % 2 == 0:
matrix[i, j] = matrix[i, j] ** 2
else:
matrix[i, j] = matrix[i, j] * -1
return matrix
@Cython:
%%cython
import numpy as np
cimport numpy as np
cimport cython
DTYPE = np.int
ctypedef np.int DTYPE_t
@cython.boundscheck(False)
@cython.wraparound(False)
@cython.nonecheck(False)
def even_odd_function7(np.ndarray matrix):
cdef int dim = matrix.shape[1]
cdef int i
cdef int j
for i in range(dim):
for j in range(dim):
if (i + j) % 2 == 0:
matrix[i, j] = matrix[i, j] * matrix[i, j]
else:
matrix[i, j] = matrix[i, j] * -1
return matrix
謝謝你。有效。我不明白的唯一部分是ndim。這意味着什麼? – MLhacker
'ndim' =數組中的維數,因此在這種情況下2.在內存視圖版本中,維數由空切片的數量來表示 - 'float64_t [:]'= 1 dim,'float64_t [: ,:''= 2 dim等。 – chrisb