我有一个数组I
及其投资回报率(感兴趣的区域)。它的ROI有两个值1和0.
我的任务是计算数组中这些值的平均值,使其ROI大于0.
例如,
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中的所有值都为零,则会发出警告。例如
ROI=[0,0,0
0,0,0
0,0,0]
我该如何解决?我正在使用python2.7并得到以下错误:
/usr/lib/python2.7/dist-packages/numpy/core/_methods.py:55:RuntimeWarning:空切片的平均值。 warnings.warn(“空切片的平均值。”,RuntimeWarning)
mask=ROI>0
if len(mask)>0:
mean_ROI=I(mask)
答案 0 :(得分:3)
检查案例:
if ROI.any():
mean = I[ROI > 0].mean()
else:
mean = 0
或使用三元组的单线:
mean = I[ROI > 0].mean() if ROI.any() else 0
答案 1 :(得分:0)
删除警告使用:
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)