【问题标题】:How to extract all K*K submatrix of matrix with or without NumPy?如何在有或没有 NumPy 的情况下提取矩阵的所有 K*K 子矩阵?
【发布时间】:2022-01-18 05:59:40
【问题描述】:

这是我的输入:

行=6 col=9

6
9
s b k g s y w g f
r g y e q j j a s
s m s a s z s l e
u s q u e h s s s
g s f h s s e s g
x d r h g y s s s

这是我的代码:

r=int(input())
c=int(input())
n=min(r,c)
k=3
matrix=[list(map(str,input().split())) for i in range(r)]
t = []
for i in range(0,n-1,k):
  for j in range(0,n-1,k):
    t.append([matrix[i+ii][j+jj] for ii in range(k) for jj in range(k)])
print(t) 

输出得到:

[['s', 'b', 'k', 'r', 'g', 'y', 's', 'm', 's'], ['g', 's', 'y', 'e', 'q', 'j', 'a', 's', 'z'], ['u', 's', 'q', 'g', 's', 'f', 'x', 'd', 'r'], ['u', 'e', 'h', 'h', 's', 's', 'h', 'g', 'y']]

此代码没有打印我的最后 3 列,为什么?请帮帮我

【问题讨论】:

  • 示例与子矩阵(连续块)的常用定义不一致。例如,第二个矩阵是混合列。请澄清。
  • 最后 3 列未打印

标签: python numpy matrix submatrix


【解决方案1】:

如果您的矩阵大小是固定的并且可以被 3 整除,则类似这样的方法可以解决问题:

for i in range(3):
    for j in range(3):
        print(M[i:i+3,j:j+3])

它也适用于更大的矩阵,但如果它不能索引三个元素,它将留下未使用的元素。

基本上我在两个轴上索引矩阵M。有关更多信息,请查看 Numpy docs

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2012-06-14
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多