Ich würde gerne Tausende von 4D-Arrays elementweise hinzufügen und Nans berücksichtigen. Ein einfaches Beispiel für 1D-Arrays wäre:
%Vor%Ich habe eine einfache for-Schleife dafür geschrieben, aber es dauert ewig - keine clevere Lösung. Eine andere Lösung könnte sein, ein größeres Array zu erstellen und Engpaß Nansum zu verwenden, aber das würde zu viel Speicher für meinen Laptop benötigen. Ich brauche eine laufende Summe über 11000 Fälle.
Hat jemand einen klugen und schnellen Weg, dies zu tun?
Hier ist eine Möglichkeit:
%Vor% Die eigentliche Schwierigkeit besteht darin, dass Sie wollen, dass nan
als Null interpretiert wird, es sei denn, alle Werte an einer bestimmten Position sind nan
. Dies bedeutet, dass Sie sowohl x als auch y betrachten müssen, um festzulegen, welche Nans ersetzt werden sollen. Wenn es dir gutgeht, alle Nan-Werte zu ersetzen, kannst du einfach np.nan_to_num(x) + np.nan_to_num(y)
machen.
Sie könnten etwas tun wie:
%Vor% um die Positionen in den Arrays zu finden, in denen beide ein NaN
in diesem Index haben. Machen Sie dann im Wesentlichen das, was @mgilson vorgeschlagen hat, wie in make Kopien und ersetzen Sie die NaN
s durch 0.0, fügen Sie die beiden Arrays zusammen und ersetzen Sie dann die markierten Indizes oben durch np.NaN
.
Tags und Links python optimization numpy scientific-computing nan