gpt4 book ai didi

python - 计算 xarray 数据集的平方根误差

转载 作者:行者123 更新时间:2023-12-04 15:32:59 26 4
gpt4 key购买 nike

我有 1 月份的 xarray 数据集monthly_data,其中包含以下信息:

lat: float64 (192)
lon: float64 (288)
time: object (1200)(monthly data)

Data Variables:
tas: (time, lat, lon)[[[45,78,...],...]...]

我有真实值grnd_trth,其中包含一月份的真实数据

Coordinates:
lat: float64 (192)
lon: float64 (288)

Data Variables:
tas(lat and lon)

现在我想根据 monthly_data 相对于 grnd_trth 计算每个月的平方根误差,我尝试使用循环,我想它工作正常,这是我的尝试:

rms = []

for i in range(1200):
err = 0
for j in (grnd_trth.tas[0] - monthly_data.tas[i]).values:
for k in j:
err += k**2
rms.append(err**1/2)

我只想知道是否有更有效的方法或任何直接的功能来做到这一点?

编辑:

monthly_data.tas 的输出:

xarray.Datarray 'tas': (time:1200 lat: 192 lon: 288)
array([[[45,46,45,4....],....]...]

Coordinates:
lat:
array([-90. , -89.75,...])

lon:
array([0., 1.25.,.... ])

time:
array([cftime.DatetimeNoLeap(0001-01-15 12:00:00),
cftime.DatetimeNoLeap(0002-01-15 12:00:00),
cftime.DatetimeNoLeap(0003-01-15 12:00:00), ...,
cftime.DatetimeNoLeap(1198-01-15 12:00:00),
cftime.DatetimeNoLeap(1199-01-15 12:00:00),
cftime.DatetimeNoLeap(1200-01-15 12:00:00)]

grnd_trth.tas的输出:

xarray.Datarray 'tas': (lat: 192 lon: 288)
array([[45,46,45,4....],....]

Coordinates:
lat:
array([-90. , -89.75,...])

lon:
array([0., 1.25.,.... ])

time:
array([cftime.DatetimeNoLeap(0001-01-15 12:00:00)]

但是当我只使用 .values( ) 函数时,它只会返回 tas 值数组!

最佳答案

就以更“高效”的方式执行此操作而言,有两点需要指出。

1) 您可以直接对 xarray 对象进行算术运算,例如。

for time_idx in range(1200):
# For each time idx, find the root squared error at
# each pixel between grnd_truth and monthly_data

err2 = (grnd_truth.tas - monthly_data.tas[time_idx,...])**2
err = err2**(1/2)

2) 有一个方法调用 .sum() 可以对数组中的所有元素求和,所以这意味着您不必执行 for k in j: 行以便对像素求和。例如。

rms=[]

for time_idx in range(2000):
# same two lines as before...

# sum over every pixel and extract the value from the DataArray
err_tot = err.sum().values

# Add to running total
rms.append(err_tot)

现在,这里要指出的一件事是,通过简单地从 DataArray 中提取值,您将丢失有关该数组的所有元数据!所以这不是真正的最佳做法,但现在我认为这可以回答您的问题?

关于python - 计算 xarray 数据集的平方根误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60797418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com