einige Funktionen von Numpy geben ndarray statt meiner Unterklasse zurück

9

Ich unterteile Numpys ndarray-Klasse und füge einige Metadaten und zusätzliche Methoden hinzu. Ich versuche den Anweisungen in diesem Artikel und dieser . Einige Numpy (oder Scipy) Funktionen geben jedoch die Basisklasse "ndarray" statt meiner benutzerdefinierten Unterklasse zurück. Andere Numpy-Funktionen geben meine Unterklasse zurück, und ich weiß nicht, was der Grund für den Unterschied ist. Wie kann ich alle numpy / scipy Funktionen meine Unterklasse zurückgeben? Folgendes habe ich getan:

%Vor%

Hier sind einige Anwendungsbeispiele:

Diese funktionieren wie erwartet -

%Vor%

aber was ist mit diesen?

%Vor%

schaue in den Code von fft und log10 Ich kann sehen, dass sie asarray() verwenden, was die Unterklasse entfernt und ein ndarray zurückgibt, was das Verhalten erklärt. Daher ist meine Frage nicht "warum passiert das technisch?", Sondern eher eine Designfrage - wie soll ich meinen Code schreiben, damit das nicht passiert?

ps. Ich bin ein Neuling sowohl bei Python als auch hier bei Stack Overflow, also entschuldige bitte offensichtliche Fehler oder Unangemessenheit ...

danke, Guy.

    
tinkerer 31.05.2011, 16:50
quelle

1 Antwort

1

Ich bin mir nicht sicher über fft , aber np.log10 ist ein ufunc . Auf der folgenden Seite wird erläutert, wie der Ausgabetyp von ufunc festgelegt wird: Ссылка

Es würde mich nicht überraschen, wenn fft immer eine ndarray zurückgegeben hätte (ich habe mir den Quellcode nicht angesehen, aber die FFT passt eindeutig nicht zur Definition einer ufunc). Wenn das der Fall ist, können Sie immer Ihren eigenen Wrapper schreiben und diesen stattdessen aufrufen.

    
NPE 31.05.2011 17:30
quelle

Tags und Links