<p>如果<code>(x+y)</code>不是平坦的,可能会有所帮助。然后掩码显示True,其中x和y索引生成非零行。你知道吗</p>
<pre><code>import numpy as np
x = np.array([[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
y= np.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
x = np.expand_dims(x, 1)
temp = x + y
</code></pre>
<p>生成x,y索引完全不为零的掩码。你知道吗</p>
<pre><code>mask = ~np.any(temp == 0, axis=2)
mask
Out[8]:
array([[False, False, False, True],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False],
[ True, False, False, False],
[False, False, False, True],
[False, False, False, False],
[False, False, False, False],
[ True, False, False, False]])
x_ix = np.indices((x.shape[0], y.shape[0]))[0, mask]
x_ix
Out[12]: array([0, 4, 5, 8])
y_ix = np.indices((x.shape[0], y.shape[0]))[1, mask]
y_ix
Out[13]: array([3, 0, 3, 0])
</code></pre>
<p>x_ix和y_ix数组标识产生所需结果的索引组合。你知道吗</p>
<p>这也许不能给出你所需要的,但可能指向一个解决方案。你知道吗</p>