2017-04-19 85 views
0

我有一個列表,我將其轉換爲矩陣。在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 

回答

3

你是不是切片的矩陣的一個列表中的錯誤。列表不能將元組作爲參數。 使用n[0:3,0:3]而不是m[0:3, 0:3]

+2

提問者可以通過解釋爲什麼這是正確的。 –

+0

看起來更像是一個錯字。爲什麼使用'n'而不使用它?主題行也提到矩陣。 – hpaulj

3

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

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

不過我建議你這樣做與矩陣。因爲它更簡單。