这是我的问题 *值是2-d np.array(31 x 37),值为0,1。
它显示如下:
如果值== 1
,则仅绘制蓝色网格 value_mask = np.ma.masked_less(value[:,:],0.001)
pc =plt.pcolor(xx,yy,value_mask,alpha =1,facecolor = "pink",edgecolor = 'steelblue',zorder =3)
如何将连续“蓝色网格”的数量相加。
在这种情况下,我的意思是将忽略与大多数人隔离的1右上方网格。
答案 0 :(得分:3)
您可以使用scipy.ndimage.label
标记value
数组中的连续区域,然后将每个标签的元素数量相加:
import numpy as np
from scipy import ndimage
value = np.array([[0, 0, 1, 1, 0, 0],
[0, 0, 0, 1, 0, 0],
[1, 1, 0, 0, 1, 0],
[0, 0, 0, 1, 0, 0]])
# label contiguous regions of non-zero elements
labels, nfeatures = ndimage.label(value)
# sizes of each region
sizes = (labels == (np.arange(nfeatures) + 1)[:, None, None]).sum((1, 2))
biggest = sizes.max() # number of non-zero elements in largest contiguous region
print(biggest)
# 3