在numpy矩阵中切割特定的行和列

问题描述:

我有一个列表,我将其转换为矩阵。在numpy矩阵中切割特定的行和列

m = [[0, 2, 1, 0, 0], [0, 0, 0, 3, 4], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 

n = np.matrix(m) 

我该如何去创建一个基于前三行和列的新矩阵?

具体做法是:

I = [[0, 2, 1], [0, 0, 0], [0, 0, 0]] 

我想下面的行会工作

I = m[0:3, 0:3] 

,但我得到

TypeError: list indices must be integers or slices, not tuple 

你是不是切片的矩阵的一个列表中的错误。列表不能将元组作为参数。 使用n[0:3,0:3]而不是m[0:3, 0:3]

+2

提问者可以通过解释为什么这是正确的。 –

+0

看起来更像是一个错字。为什么使用'n'而不使用它?主题行也提到矩阵。 – hpaulj

除了user1753919的回答,您可以用下面的代码片名单:

In [10]: [row[0:3] for row in m[0:3]] 
Out[10]: [[0, 2, 1], [0, 0, 0], [0, 0, 0]] 

不过我建议你这样做与矩阵。因为它更简单。