擅长:python、mysql、java
<p>可以使用布尔掩码来表示每个单独的条件。第一个很简单:</p>
<pre class="lang-py prettyprint-override"><code>c1_mask = frame[0] != -1
# edited version:
c1_mask = (frame!=-1).all(axis=1)
</code></pre>
<p>第二个问题可以通过卷积运算来解决</p>
<pre class="lang-py prettyprint-override"><code>from scipy.signal import convolve2d
c2_mask = convolve2d(frame.values, np.eye(3), mode='valid')
c2_mask = (np.vstack([c2_mask, np.zeros((3, 1))]) == 3).reshape(-1)
# edited version:
c2_kernal = np.vstack((np.zeros((1,3)), np.eye(3)))
c2_mask = convolve2d(frame.values, c2_kernal, mode='valid')
c2_mask = (c2_mask == 3).reshape(-1)
</code></pre>
<p>然后把它们结合起来:</p>
<pre class="lang-py prettyprint-override"><code>frame[c1_mask & c2_mask]
# edited version:
(frame[:-3])[(c1_mask[:-3]).shift[-1] & c2_mask]
</code></pre>
<p>注意,在这个解决方案中,列数只是一个参数,因此它可以很容易地扩展。你知道吗</p>