【问题标题】:slice 2X2 matrix out of 4X4 matrix in python?在python中从4X4矩阵中切出2X2矩阵?
【发布时间】:2014-09-05 01:00:46
【问题描述】:

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

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

【问题讨论】:

标签: python arrays matrix ellipsis


【解决方案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]]

基本上你想要做的是切出你不想要的行(这就是a[k:l] 中的x 正在做的事情),然后用x[m:n] 切出列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-21
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多