Numpy:剪辑/剪切2d蒙面阵列

时间:2013-05-28 08:35:48

标签: python numpy

来自这样的蒙面二维数组:( x = --

x x x x
x 5 6 x
x x x x
x x 9 x

我怎样才能得到:(尽可能多地限制边缘直到达到数字)

5 6
x x 
x 9

感谢。

2 个答案:

答案 0 :(得分:0)

使用切片:-)

slice = x[1:, 1:-1]

您还可以修剪边缘:

while all(x.mask[0, :]): x = x[1:, :]
while all(x.mask[-1, :]): x = x[:-1, :]
while all(x.mask[:, 0]): x = x[:, 1:]
while all(x.mask[:, -1]): x = x[:, :-1]

答案 1 :(得分:0)

这应该为一般情况做你想要的切片:

import numpy as np
si, se = np.where(~x.mask)
x = x[si.min():si.max() + 1, se.min():se.max() + 1]