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 个元素来完成此操作,但您可以删除此步骤。
我在从栅格计算数组时发现了这个问题:
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 个元素来完成此操作,但您可以删除此步骤。