我有一个numpy
由零和一个组成的二维数组,用作其他数组的掩码。我试图用来matplotlib.contour
突出显示绘图上的一个区域,但每次尝试时都会zero-size array to minimum.reduce without identity
出错。任何想法?
由于此蒙版是一组矩形,因此我尝试手动查找边缘,但无法正常工作。这是我使用的代码:
tmp1,tmp2 = [],[]
for ii in range(len(mask))[1:-2]:
if mask[ii+1] - mask[ii] != 1: tmp1.append(mask[ii])
if mask[ii] - mask[ii-1] != 1: tmp2.append(mask[ii]-1)
rect_limits = []
for ii in range(len(tmp1)):
rect_limits.append([- delta_cont, tmp1[ii], delta_cont, tmp2[ii]])
这样tmp1
,tmp2
应该给我正在搜索的矩形的最大值和最小值。(矩形的侧边是固定的,所以没有问题)。
然后我只需要用来add_patch
创建我想要的矩形的轮廓。
找到矩形边缘的任何替代想法?
编辑:
好的,所以我的面具是这样的:
[[0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 1 1 1 1 0 0],
[0 0 0 0 0 0 1 1 1 1 0 0],
[0 0 0 0 0 0 1 1 1 1 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 1 1 1 1 0 0],
[0 0 0 0 0 0 1 1 1 1 0 0],
[0 0 0 0 0 0 1 1 1 1 0 0],
[0 0 0 0 0 0 1 1 1 1 0 0]]
理想情况下,我想要的结果是:
[[1,3],[6,9]]
即,使用构建的数组
[[y_start1,y_end1],[y_start2,y_end2],...]