你想用slice notation,如a[1:29,1:29]
,而不是一個列表。
如果需要,可以使用p = slice(1,29)
創建一個slice
對象以獲得更多matlab行爲。
In [9]: a = -np.ones((10,10))
In [10]: a
Out[10]:
array([[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.]])
In [11]: a[1:4,1:4] = 9
In [12]: a
Out[12]:
array([[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., 9., 9., 9., -1., -1., -1., -1., -1., -1.],
[-1., 9., 9., 9., -1., -1., -1., -1., -1., -1.],
[-1., 9., 9., 9., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1., -1., -1., -1., -1., -1.]])
In [13]: p = slice(1,4)
In [14]: a[p,p]
Out[14]:
array([[ 9., 9., 9.],
[ 9., 9., 9.],
[ 9., 9., 9.]])