使用xarray选取3D数组中均值最高的2D层的实现方法
错误原因
你之前调用的max(dim='x')是沿x维度对每个(y,z)位置的元素逐位取最大值,得到的是不同x层对应位置最大值拼接的数组,不符合取完整单一层的需求。
实现代码
你需要先计算每个x对应2D层的整体均值,再找到均值最大的层对应的x索引,最后按索引取出完整层即可:
# 计算每个x层的整体均值 layer_means = array.mean(dim=('y', 'z')) # 获取均值最大层的x索引 max_x_idx = layer_means.argmax() # 取出对应层 max_mean_layer = array.isel(x=max_x_idx)
也可以合并为一行写法:
max_mean_layer = array.isel(x=array.mean(dim=('y','z')).argmax())
示例运行结果
针对你给出的测试数组,x=0层的整体均值为2.0,x=1层的整体均值约为2.22,最终取出的均值最高层为:
<xarray.DataArray (y: 3, z: 3)> array([[1, 3, 2], [2, 5, 1], [2, 3, 1]]) Dimensions without coordinates: y, z
内容的提问来源于stack exchange,提问作者FlipAD
相关产品推荐
相关产品推荐

