您想使用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.]])