在python中用4X4矩阵切出2X2矩阵?

时间:2014-07-14 23:59:57

标签: python arrays matrix ellipsis

我正在阅读使用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]]
>>> 

不知何故,最后两个调用返回相同的子矩阵,而不是我寻找的

1 个答案:

答案 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]]

基本上你想要做的就是切掉你不想要的行(xa[k:l]正在做什么)然后用{切片列} {1}}。