我正在阅读关于Ellipsis在Python 3中的使用的文章。
考虑到这个矩阵:
A=[
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]
]我想从中提取各种2X2矩阵,如果可能的话最好使用片表示法:
例:
左上角:
B=[
[1,2],
[3,4]
]右下角:
c=[
[[9,10],
[13,14]
]中间2X2:
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]]
>>> 不知怎么的,最后两个调用返回相同的子矩阵,这不是我所寻找的。
发布于 2014-07-15 00:12:09
你可能想要清单理解。
左上角:
[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]中所做的),然后用x[m:n]分割列。
https://stackoverflow.com/questions/24747929
复制相似问题