擅长:python、mysql、java
<p>给定一个大小为<em>N</em>的正方形矩阵和一个拆分大小为<em>d</em>的矩阵(因此矩阵将被划分为<em>N/d</em>*<em>N/d</em>的子矩阵),你能用几次<code>numpy.split</code>来建立这些子矩阵的集合,并将它们相加,然后将它们放在一起吗?在</p>
<p>这应该被视为伪代码而不是有效的实现,但它表达了我的想法:</p>
<pre><code> def chunk(matrix, size):
row_wise = []
for hchunk in np.split(matrix, size):
row_wise.append(np.split(hchunk, size, 1))
return row_wise
def sum_chunks(chunks):
sum_rows = []
for row in chunks:
sum_rows.append([np.sum(col) for col in row])
return np.array(sum_rows)
</code></pre>
<p>或者更紧凑的</p>
^{pr2}$
<p>这样可以得到如下结果:</p>
<pre><code> In [16]: a
Out[16]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
In [17]: chunk.sum_in_place(a, 2)
Out[17]:
array([[10, 18],
[42, 50]])
</code></pre>