2016-08-02 25 views
0

ich ein Problem mit diesem Python-Code haben:Komplexe Matrix in Python

A = np.zeros((2*M + 2,nt)) 
A[1, :] = d[0,0] * np.ones((1,nt)) 

wo d[0,0] komplex ist. Ich erhielt diesen Fehler:

ComplexWarning: Casting complex values to real discards the imaginary part 

während

A[1, :] = d[0,0] * np.ones((1,nt)) 

Antwort

0

Dies liegt daran, standardmäßig numpy Array enthält Nullen, die int Typ ist, und Sie versuchen, eine komplexe Anordnung zuweisen Array integer. Wenn Sie A = np.zeros((2*M+2, nt), dtype=np.complex) schreiben, sollte das Problem behoben sein. dtype Parameter im Grunde sagt numpy, um Elemente komplexe 0 zu werfen, die eigentlich ist.

+0

standardmäßig 'numpy' Arrays sind' float64', nicht 'int' – donkopotamus

+0

Großartig, vielen Dank! – Martin

+0

Gern geschehen :) – Fma

0

Versuchen Sie, einen Komplex bewertet Array AA oder ein realen bewertet Array zu berechnen? Wenn der ehemalige, dann erklären A als:

A = np.zeros((2*M + 2,nt), dtype=complex) 

Ansonsten werfen Sie Ihre komplexen Wert d[0, 0] zu einem echten Verwendung:

A[1, :] = (1+4j).real * np.ones((1,1))