擅长:python、mysql、java
<p>重塑、交换轴(或转置轴)并重塑以使<code>overDone</code>返回-</p>
<pre><code>xy.reshape(20,8,20,8).swapaxes(1,2).reshape(400,8,8)
</code></pre>
<p>有关<a href="https://stackoverflow.com/a/47978032/3293881">^{<cd2>}</a>的详细信息。在</p>
<p>使其通用以处理常规形状-</p>
^{pr2}$
<p>样本运行-</p>
<pre><code># Original input
In [21]: overDone = np.random.rand(400,8,8)
# Perform forward step to get xy
In [22]: xy = np.vstack(np.hstack(overDone[20*i:20+20*i]) for i in range(overDone.shape[0]//20))
# Use proposed approach to get back overDone
In [23]: out = xy.reshape(20,8,20,8).swapaxes(1,2).reshape(400,8,8)
# Verify output to be same as overDone
In [42]: np.array_equal(out,overDone)
Out[42]: True
</code></pre>
<p>奖金:</p>
<p>我们可以使用相同的矢量化<code>reshape+permute-axes</code>步骤来创建<code>xy</code>作为转发过程-</p>
<pre><code>xy = overDone.reshape(20,20,8,8).swapaxes(1,2).reshape(160,160)
</code></pre>