擅长:python、mysql、java
<p>只能对<a href="http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.array.html" rel="nofollow">^{<cd2>}</a><em>而不是普通python列表执行逻辑索引(<code>data[data != 0]</code>)。如果要从python列表中移除值,则需要使用列表理解来执行此操作。</p>
<pre><code>newvalues = [x for x in Beam_irradiance_DNI if x != 0]
</code></pre>
<p>另一种方法是将python列表实际转换为numpy数组。</p>
<pre><code>nparray = np.array(Bean_irradiance_DNI)
</code></pre>
<p>然后,您将能够执行您想要执行的逻辑索引</p>
<pre><code>nparray[nparray == 0] = np.nan
</code></pre>
<p>另一种方法是<em>不</em>改变数组本身,只将非零值传递给<code>hist</code></p>
<pre><code>plt.hist(Beam_irradiance_DNI[Beam_irradiance_DNI != 0], color="grey")
</code></pre>
<p>如果您仍然对零有问题,很可能是因为这些数字被存储为浮点数,并且它们的值并不是<em>完全</em>零。为此,您需要使用以下条件来检测“零”。</p>
<pre><code>is_zero = np.absolute(Beam_irradiance_DNI) < np.finfo(float).eps
Beam_irradiance_DNI[is_zero] = np.nan
</code></pre>