回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>假设我有一个矩阵,由如下列表组成:</p>
<pre><code>>>> LoL=[list(range(10)) for i in range(10)]
>>> LoL
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
</code></pre>
<p>另外,假设我有一个名为<code>LoLa</code>的相同结构的numpy矩阵:</p>
<pre><code>>>> LoLa=np.array(LoL)
</code></pre>
<p>使用numpy,我可以得到这样一个矩阵的子矩阵:</p>
<pre><code>>>> LoLa[1:4,2:5]
array([[2, 3, 4],
[2, 3, 4],
[2, 3, 4]])
</code></pre>
<p>我可以用纯Python复制numpy矩阵片段,如下所示:</p>
<pre><code>>>> r=(1,4)
>>> s=(2,5)
>>> [LoL[i][s[0]:s[1]] for i in range(len(LoL))][r[0]:r[1]]
[[2, 3, 4], [2, 3, 4], [2, 3, 4]]
</code></pre>
<p>这不是世界上最容易阅读的东西,也不是最有效的东西</p>
<p>问:有没有一种更简单的方法(在纯Python中)将任意矩阵分割为子矩阵?</p>