sagen, dass ich zwei numpy Arrays konstruieren:Mittelwert, nanmean und Warnung: Mittelwert der leeren Scheibe
a = np.array([np.NaN, np.NaN])
b = np.array([np.NaN, np.NaN, 3])
Jetzt finde ich, dass np.mean
kehrt nan
für beide a
und b
:
>>> np.mean(a)
nan
>>> np.mean(b)
nan
Seit numpy 1.8 (veröffentlicht am 20. April 2016), wurden wir mit nanmean
gesegnet, die nan
Werte ignoriert:
>>> np.nanmean(b)
3.0
Wenn jedoch das Array hat nichts abernan
Werte, wirft es eine Warnung:
>>> np.nanmean(a)
nan
C:\python-3.4.3\lib\site-packages\numpy\lib\nanfunctions.py:598: RuntimeWarning: Mean of empty slice
warnings.warn("Mean of empty slice", RuntimeWarning)
Ich mag keine Warnungen zu unterdrücken; Gibt es eine bessere Funktion, die ich verwenden kann, um das Verhalten von nanmean
ohne diese Warnung zu erhalten?
Warum ist die Warnung ein Problem? –
Ich muss zugeben, die Warnung macht keinen Sinn. Ein sinnvolles Verhalten ist die konsequente Rückgabe von 'nan'; der andere, konsequent eine Ausnahme zu erheben. Eine Warnung ist so eine Antwort. – Amadan
Was ist los mit der Unterdrückung von Warnungen? Sie müssen es nicht im großen Stil tun - unterdrücken Sie einfach die Warnung, wo Sie wissen, dass Sie 'np.nanmean' in einem Array aller NaNs verwenden könnten. –