擅长:python、mysql、java
<p>我不完全确定<code>contours</code>的形状,但我怀疑在调用<code>sorted</code>之后,您创建了一个由numpy数组组成的python列表。在</p>
<p>在这行<code>contours.remove(contours[i])</code>中,您尝试从numpy数组列表中删除一个元素。<code>list.remove</code>方法对<code>list</code>中的所有元素进行线性搜索,并将它们与要删除的元素进行比较。因此,您将在<code>remove</code>方法中比较numpy数组和numpy数组,并在这个比较的布尔值上分支,这个值是不明确的。在</p>
<p>不必使用<code>remove</code>(实际上只有在不知道要删除的元素的索引时才会使用它),您可以<code>pop</code>该索引处的元素。在</p>
<p>但在你的情况下似乎有更好的选择。如果我观察正确,您希望在<code>contours</code>中找到<code>n</code>最大的条目。在python中,当数据被排序时,这是一个简单的任务(您已经做到了)。因此,可以在对数组进行排序后对其进行切片:</p>
<pre><code>def get_biggest_n_contours(contours, n):
contours = sorted(contours, key=get_area, reverse=True)
return contours[:n]
</code></pre>
<p>切片会帮你做所有的工作
1{如果所有元素都小于^则返回它们
2如果确实存在<code>n</code>元素,则返回所有元素
三。如果有更多,只需返回第一个<code>n</code>元素</p>