您想使用切片表示法,如 中a[1:29,1:29]
,而不是列表。
如果你愿意,你可以创建一个slice
对象p = slice(1,29)
来获得更多的 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.]])