擅长:python、mysql、java
<pre><code>>>> import numpy as np
>>> a = np.arange(10)
>>> a[(a > 2) & (a < 8)]
array([3, 4, 5, 6, 7])
</code></pre>
<p>每个条件(<code>a > 2</code>和<code>a < 8</code>)都在创建一个长度等于<code>a</code>的布尔numpy数组,并且在<code>a</code>中的每个位置包含条件的真值。在</p>
^{pr2}$
<p>然后,使用<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.logical_and.html" rel="nofollow">numpy.logical_and</a>来找到两个条件均为真的位置。在</p>
<p>最后,将生成的数组用作<a href="http://docs.scipy.org/doc/numpy/user/basics.indexing.html#boolean-or-mask-index-arrays" rel="nofollow">boolean or "mask" index array</a>,仅从原始数组中检索满足条件的元素。在</p>
<p>我认为您得到的是<code>ValueError</code>,因为尽管<code>a > 2</code>是有效的(实际上只是调用<code>a.__gt__(2)</code>,但是像{<cd8>}这样的语句首先调用<code>cmp(2,a)</code>,这对我来说是相同的<code>ValueError</code>:</p>
<pre><code>>>> a = np.arange(10)
>>> cmp(2,a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
</code></pre>