擅长:python、mysql、java
<p>您可以使用<a href="http://docs.scipy.org/doc/numpy/reference/maskedarray.html" rel="nofollow">masked arrays</a>来实现这一点,但在我运行的测试中,它比<code>(angles * belong).sum(1)</code>快。在</p>
<p>掩码数组方法如下所示:</p>
<pre><code>sum_ang = np.ma.masked_where(~belong, angles, copy=False).sum(1).data
</code></pre>
<p>这里,我们正在创建一个<code>angles</code>的掩码数组,其中值<code>~belong</code>(“不属于”)是<em>掩码的</em>(排除)。我们使用<em>而不是</em>,因为我们要排除<code>belong</code>中的<code>False</code>中的值。然后沿着第<code>.sum(1)</code>行取和。<code>sum</code>将返回另一个掩码数组,因此您可以使用该掩码数组的<code>.data</code>属性获取值。在</p>
<p>我添加了<code>copy=False</code>kwarg,这样代码就不会因为创建数组而变慢,但是它仍然比<code>(angles * belong).sum(1)</code>方法慢,所以您应该坚持这样做。在</p>