【发布时间】:2020-06-29 22:26:32
【问题描述】:
我在模型中有一段代码,它根据前一天另一个数组的值转换数组。如果当日最高气温低于前一天最低气温,则该值应改为当日前一天最低气温的值。同样,当当日前一天的最低温度高于前一天的最高温度时,该值应改为当日前一天的最高温度值。我有两个版本都给出相同的错误,因为 Dask 数组不支持项目分配:
for ens in range(0,num_ens):
for lat in range(0, num_lats):
for lon in range(0, num_lons):
for day in range(1, 240):
if max_ens[ens, lat, lon, day] < min_ens[ens, lat, lon, day-1]:
max_ens[ens, lat, lon, day] = min_ens[ens, lat, lon, day-1]
if min_ens[ens, lat, lon, day] > max_ens[ens, lat, lon, day-1]:
min_ens[ens, lat, lon, day] = max_ens[ens, lat, lon, day-1]
矢量化版本:
max_ens[:, :, :, day] = np.maximum(max_ens[:, :, :, day], min_ens[:, :, :, day - 1])
min_ens[:, :, :, day] = np.minimum(min_ens[:, :, :, day], max_ens[:, :, :, day - 1])
有谁知道如何在 Dask 中有效地做到这一点?
提前致谢!
编辑:
我一直在尝试实现 where 函数,但是当应用 where 函数时,数组的形状会被调整。
【问题讨论】:
标签: python vectorization variable-assignment dask python-xarray