在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]
。
答
除了user1753919的回答,您可以用下面的代码片名单:
In [10]: [row[0:3] for row in m[0:3]]
Out[10]: [[0, 2, 1], [0, 0, 0], [0, 0, 0]]
不过我建议你这样做与矩阵。因为它更简单。
提问者可以通过解释为什么这是正确的。 –
看起来更像是一个错字。为什么使用'n'而不使用它?主题行也提到矩阵。 – hpaulj