numpy mean() 的 return 值是多少?

what is the return value of numpy mean()?

我在从栅格计算数组时发现了这个问题:

with rasterio.open(file) as ds:   
    arr3d=ds.read()
    arr3d=np.ma.masked_where(arr3d==-32768,arr3d,False)
    list=[]
    for i in range(0,24):
        tmean=arr3d[i,:,:].mean()  
        list.append(tmean)

我只想获取包含 24 个平均值的列表,但是这段代码返回的列表包括 arr3d 的每一层、它的遮罩层和平均值。

 len(list)=72       

但是当我尝试 arr3d[i,:,:].mean() 时,只是返回了一个没有任何数组的平均值。 arr.mean()np.mean(arr) 有什么区别?

np.mean() returns 要么:(1) 单个值,如果沿展平数组取平均值或数组是一维的,或 (2) 值数组具有沿每个轴的平均值。因为这会造成混淆,所以我建议始终明确地将 axis 参数传递给 np.mean() 函数。如果您不传递轴,则它采用展平数组的平均值。 .mean() 函数也是如此 - 它们实际上是相同的函数。

我建议明确传递要计算平均值的轴:

with rio.open(file) as ds:   
    arr3d=ds.read()
    arr3d=np.ma.masked_where(arr3d==-32768,arr3d,False)
    means = np.mean(arr3d, axis=0)

那么 means 的元素数量将始终与 arr3d 的第一个轴中的元素数量相同。您目前通过手动迭代 24 个元素来完成此操作,但您可以删除此步骤。