Pythonでネストされたリストとして正方行列がある場合、それをいくつかの同じサイズのボックスに分割して、各要素がそれらのボックスの1つにある数値のリストである新しいリストを作成できます。例えば
a = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15 ,16]]
b = [[a[0][0], a[0][1], a[1][0], a[1][1]],
[a[0][2], a[0][3], a[1][2], a[1][3]],
[a[2][0], a[2][1], a[3][0], a[3][1]],
[a[2][2], a[2][3], a[3][2], a[3][3]]]
これを行う簡単な方法はありますか?これを、さまざまなサイズの行列に適用したり、ボックスのサイズを指定したりできる関数として設定する方法はありますか?