2013-01-06 30 views
6

Sto provando a portare un po 'di codice Python su cython e sto riscontrando alcuni problemi minori.array numpy con cython

Di seguito viene visualizzato uno snippet di codice (esempio semplificato) del codice.

cimport numpy as np 
cimport cython 
@cython.boundscheck(False) # turn of bounds-checking for entire function 
@cython.wraparound(False) 
@cython.nonecheck(False) 
def Interpolation(cells, int nmbcellsx): 
    cdef np.ndarray[float,ndim=1] celle 
    cdef int cellnonzero 
    cdef int i,l 
    for i in range(nmbcellsx): 
      celle = cells[i].e 
      cellnonzero = cells[i].nonzero 
      for l in range(cellnonzero): 
       celle[l] = celle[l] * celle[l] 

non capisco perché il ciclo più interno non è pienamente traduce in codice C (ossia l'ultima riga, celle [l] = ...), vedi uscita da cython -a feedback:

enter image description here

Cosa mi manca qui?

Grazie mille.

+1

Quell'immagine è un po 'difficile da leggere - Copia e incolla del bit pertinente sarebbe più facile ... –

+0

Che tipo di compilatore hai? 'Celle [l] * = celle [l]' è lo stesso? – denis

risposta

1

Ho finalmente realizzato che un semplice "ritorno 0" alla fine della funzione risolve questo problema. Tuttavia, questo comportamento mi sembra abbastanza strano. Questo è davvero un bug?

Problemi correlati