2016-10-01 2 views
2

Ich konvertierte LU Dekomposition Matlab-Code in Python.'numpy.darray' Objekt ist nicht aufrufbar Fehler in Python

Aber während ich es tat, stieß ich mit diesem Fehler

'numpy.ndarray' object is not callable

dieser Fehler tritt auf, wenn ich versuchte, meinen Code zu testen. Hier ist mein Code und kann jemand mit diesem Problem helfen? Ich warte auf deine Hilfe.

import numpy as np 

def LU(a): 
    [m,m]=a.shape 

    for k in range(0,m-1,1): 
     a[k+1:m-1,k]=a[k+1:m-1,k]/a(k,k) 
     a[k+1:m-1,k+1:m-1]=a[k+1:m-1,k+1:m-1]-a[k+1:m-1,k]*a[k,k+1:m-1] 
    L=np.eye(m,m)+np.tril(a,-1) 
    U=np.triu(a) 
    return [L,U] 

b=np.array([[1,0,0],[0,1,0],[0,0,1]]) 

LU(b) 
+0

Sie sollten immer den vollständigen Traceback in Ihre Frage aufnehmen, nicht nur die letzte Zeile. Dies macht es viel einfacher zu sehen, wo in Ihrem Code der Fehler auftritt (wie andere gesagt haben, das Problem ist, dass Sie runde statt eckige Klammern in 'a (k, k)') verwendet haben. –

Antwort

5

Der Fehler auftritt, weil Sie die falsche Art von Klammern auf der 4. Zeile Ihrer Funktion verwendet haben.

a[k+1:m-1,k]=a[k+1:m-1,k]/a(k,k) 

sollte

a[k+1:m-1,k]=a[k+1:m-1,k]/a[k,k] 

d.h. die () Zahnspangen durch [] korrigiert werden sollte ersetzt werden. Der Fehler tritt auf, weil [] geschweifte Klammern eine Indizierung vorschlagen, während () geschweifte Klammern einen Funktionsaufruf vorschlagen.

Verwandte Themen