How to compute the mean of a 2D array with ROI?
我有一个数组
我的任务是计算数组中这些值的平均值,使其ROI大于0。
例如,
1 2 3 4 5 6 | I=[1,2,3 4,5,6 7,8,9] ROI=[0,1,1 1,0,0 0,0,1] |
平均值将是平均值(2,3,4,9)= 18/4 = 4.5
这是我的代码,但是,如果ROI中的所有值都为零,则会发出警告。 例如
1 2 3 | ROI=[0,0,0 0,0,0 0,0,0] |
我该如何解决? 我使用python2.7并得到以下错误:
/usr/lib/python2.7/dist-packages/numpy/core/_methods.py:55: RuntimeWarning: Mean of empty slice.
warnings.warn("Mean of empty slice.", RuntimeWarning)
1 2 3 | mask=ROI>0 if len(mask)>0: mean_ROI=I(mask) |
只需查看案例:
1 2 3 4 | if ROI.any(): mean = I[ROI > 0].mean() else: mean = 0 |
或使用三元组的单线程:
1 | mean = I[ROI > 0].mean() if ROI.any() else 0 |
要删除警告使用:
1 2 3 4 5 6 | import warnings with warnings.catch_warnings(): warnings.simplefilter("ignore", category=RuntimeWarning) mymean = np.mean([i for i, j in zip(I, ROI) if j]) print(mymean) |