将python矩阵切成象限

mou*_*980 3 python arrays matrix

假设我在python中有以下矩阵:

[[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]

我想将它切成下面的矩阵(或象限/角):

[[1,2], [5,6]]

[[3,4], [7,8]]

[[9,10], [13,14]]

[[11,12], [15,16]]
Run Code Online (Sandbox Code Playgroud)

这是python中的标准切片运算符支持还是必须使用像numpy这样的扩展库?

Nat*_*usa 9

如果您总是使用4x4矩阵:

a = [[1 ,2 , 3, 4],
     [5 ,6 , 7, 8],
     [9 ,10,11,12],
     [13,14,15,16]]

top_left =  [a[0][:2], a[1][:2]]
top_right = [a[0][2:], a[1][2:]]
bot_left =  [a[2][:2], a[3][:2]]
bot_right = [a[2][2:], a[3][2:]]
Run Code Online (Sandbox Code Playgroud)

您也可以对任意大小的矩阵执行相同的操作:

h = len(a)
w = len(a[1])
top_left =  [a[i][:h / 2] for i in range(w / 2)]
top_right = [a[i][h / 2:] for i in range(w / 2)]
bot_left =  [a[i][:h / 2] for i in range(w / 2, w)]
bot_right = [a[i][h / 2:] for i in range(w / 2, w)]
Run Code Online (Sandbox Code Playgroud)