擅长:python、mysql、java
<p>行:</p>
<pre><code>if logical_and((vals-datas[j]!=0),(datas[j]!=0),(datas[j-1]!=0))
</code></pre>
<p>有两个错误:</p>
<ol>
<li><p>大概你想对<code>(vals-datas[j] != 0)</code><strong>和</strong><code>(datas[j] != 0)</code><strong>和</strong><code>(datas[j-1] != 0)</code>执行<code>logical_and</code>。然而<code>numpy.logical_and</code>只接受两个<em>输入</em>参数,第三个if传递的参数被假定为一个<em>输出</em>数组。因此,如果希望对三个数组进行<code>numpy.logical_and</code>操作,则应将其表示为:</p>
^{2美元</li>
<li><p>无论如何,在<code>if</code>语句中使用<code>logical_and</code>是没有意义的。它返回一个数组,而数组没有一个<em>真值</em>。也就是说,一个<code>logical_and</code>的结果是一个布尔数组,其中一些是真的,有些是假的。你想检查他们是否都是真的吗?或者至少有一些是真的?在</p>
<p>如果是前者,则应测试为:</p>
<pre><code>if numpy.all(logical_and(...)):
...
</code></pre>
<p>如果后者测试为:</p>
<pre><code>if numpy.any(logical_and(...)):
...
</code></pre></li>
</ol>