如何在Python中从4X4矩阵切出2X2矩阵?
我正在了解在 Python 3
中引入的 Ellipsis
的用法。
考虑这个矩阵:
A=[
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]
]
我想从中提取出各种 2 X 2 的小矩阵,最好能用切片的方式来实现:
比如:
左上角:
B=[
[1,2],
[3,4]
]
右下角:
c=[
[[9,10],
[13,14]
]
中间的 2 X 2:
d=[
[6,7],
[10,11]
]
我想尽量不使用循环来实现这个功能。请问 Ellipsis
能帮助我从这个高维数组中提取出小矩阵吗?
我尝试了以下方法:
>>> a[:2][:2]
[[1, 2, 3, 4], [5, 6, 7, 8]]
>>> a[:2][:2][:2]
[[1, 2, 3, 4], [5, 6, 7, 8]]
>>>
但最后两个调用返回的子矩阵是一样的,这并不是我想要的结果。
1 个回答
2
你可能想要使用列表推导式...
左上角:
[x[:2] for x in a[:2]]
右上角:
[x[2:] for x in a[:2]]
中间:
[x[1:3] for x in a[1:3]] or [x[1:3] for x in a[2:4]]
简单来说,你需要做的是去掉你不想要的行(这就是a[k:l]
中的x
在做的事情),然后再去掉一些列,用x[m:n]
来实现。