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.
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.