我正在阅读使用Ellipsis
中引入的Python 3
。
考虑这个矩阵:
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]]
>>>
不知何故,最后两个调用返回相同的子矩阵,而不是我寻找的
答案 0 :(得分:1)
你可能想要列表推导......
左上角:
[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]]
基本上你想要做的就是切掉你不想要的行(x
中a[k:l]
正在做什么)然后用{切片列} {1}}。