2013-01-06 17 views
6

Ich versuche, einige Python-Code nach Cython portieren und ich habe einige kleinere Probleme.Numpy-Array mit Cython

Unten sehen Sie ein Code-Snippet (vereinfachtes Beispiel) des Codes.

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] 

Ich verstehe nicht, warum die am weitesten innen Schleife nicht vollständig in C-Code (dh die letzte Zeile, celle [l] = ...) übersetzen, siehe Ausgabe von cython -a feedback:

enter image description here

Was fehlt mir hier?

Vielen Dank.

+1

Das Bild ist ein bisschen schwer zu lesen - Kopieren und Einfügen des entsprechenden Bits wäre einfacher ... –

+0

Was c Compiler haben Sie? Ist "celle [l] * = celle [l]" dasselbe? – denis

Antwort

1

Ich erkannte schließlich, dass eine einfache "Rückkehr 0" am Ende der Funktion dieses Problem löst. Dieses Verhalten erscheint mir jedoch ziemlich seltsam. Ist das tatsächlich ein Fehler?