擅长:python、mysql、java
<p>对于numpy阵列:</p>
<pre><code>>>> a = np.array([2, 1, 0, np.nan, 0, 5, 6, np.nan, 1, 9, 0, 1, 8, 7, 4])
>>> a[~np.isnan(a) & (a != 0)]
array([ 2., 1., 5., 6., 1., 9., 1., 8., 7., 4.])
>>> a[~np.isnan(a) & (a != 0)][:5]
array([ 2., 1., 5., 6., 1.])
</code></pre>
<p>对于Python列表:</p>
^{pr2}$
<p><strong>注意</strong>:显式使用<code>if x and not math.isnan(x)</code>,而不是<code>if x</code>,因为<code>nan</code>用作谓词时被视为<code>True</code>:</p>
<pre><code>>>> bool(np.nan)
True
>>> bool(float('nan'))
True
>>> bool(None)
False
>>> float('nan') == float('nan')
False
>>> np.nan == np.nan
False
>>> math.isnan(float('nan')), math.isnan(np.nan)
(True, True)
>>> np.isnan(float('nan')), np.isnan(np.nan)
(True, True)
</code></pre>