numpy切片中的坑
今天我需要在大矩阵中提取小矩阵,百度了一波之后,我以为他与matlab
中一样,可以用i+:
,但是我用了之后才发现他只支持了一半,把我坑到了、
例子
一个简单的程序,从[200,200]
的矩阵中取出[20,20]
的小矩阵.
x = np.arange(400*100).reshape(200, 200) |
观察输出,发现只有第一次取的矩阵是正确的:
(200, 200) |
错误解析
看这里
x[j*20+0:20, i*20+0:20] |
其中
j*20+0:20 |
这里其实是python
不支持matlab
中先那样,从0:20
中创建序列然后再对序列每一个元素做加法.
而在python
中是把他自动解析成两部分的:(j*20+0):(20)
,所以循环下去就会出现问题
修改如下
按照python
中的规则即可~~
(就是写起来好不爽
x = np.arange(400*100).reshape(200, 200) |