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

时间:2017-04-19 00:29:09

标签: python numpy matrix

我有一个列表,我将其转换为矩阵。

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

2 个答案:

答案 0 :(得分:3)

您正在切割列表而不是矩阵。 list不能将元组作为参数。 使用n[0:3,0:3]代替m[0:3, 0:3]

答案 1 :(得分:3)

除了用户1753919的答案,您还可以使用以下代码对列表进行切片:

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

但我建议你用矩阵来做。因为它更简单。