gpt4 book ai didi

python - 在Python中对多维数组应用Mann Whitney U测试并替换xarray数据数组变量的单个值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:29 24 4
gpt4 key购买 nike

我是 Python 新手,需要一些有关 xarray 的帮助。我有两个用于 future 和过去气候的 3 维数据数组(rlon、rlat、时间)。我想计算每个网格点的曼惠特尼 U 检验,以分析 future 与过去相比温度变化的显着性。我已经完成了 Mann-Whitney-U-test 工作,从历史数据和 future 数据的一个网格点中选择一个时间序列。示例:

import numpy as np
import xarray as xr
import scipy.stats as sts

#selecting time period and grid point of past and future data

tp = fileHis['tas']
tf = fileFut['tas']
gridpoint_past=tp.sel(rlon=-6.375, rlat=1.375, time=slice('1999-01-01', '1999-01-31'))
gridpoint_future=tf.sel(rlon=-6.375, rlat=1.375, time=slice('2099-01-01', '2099-01-31'))

#mannwhintey-u-test

result=sts.mannwhitneyu(gridpoint_past, gridpoint_future, alternative='two-sided')
print('pvalue =',result[1])

输出:p值 = 0.05922372345359562

我现在的问题是,我需要对每个网格点和每个月执行此操作,最后我希望有一个数据数组,其中包含每个网格点和一年中每个月的 pvalues。我正在考虑循环遍历所有 rlat、rlon 和月份,并为每个运行 Mann-Whitney-U 测试,除非有更好的方法。如何将 pvalues 一一写入具有相同 rlat、rlon 维度的新数据数组中?我正在尝试这个,但它不起作用:我创建了一个数据数组 pvalue_mon,它具有与 tptf 相同的 rlat、rlon,并且时间步长为 12 个月。

pvalue_mon.sel(rlon=-6.375, rlat=1.375, time=th.time.dt.month.isin([1])) = result[1] 
SyntaxError: can't assign to function call

或者这个:

pvalue_mon.sel(rlon=-6.375, rlat=1.375, time=pvalue_mon.time.dt.month.isin([1])).update(result[1])
TypeError: 'numpy.float64' object is not iterable

如何替换现有变量的单个值?

最佳答案

不要使用 .sel() 函数,而是尝试使用 .loc[ ],如下所述: http://xarray.pydata.org/en/stable/indexing.html#assigning-values-with-indexing

关于python - 在Python中对多维数组应用Mann Whitney U测试并替换xarray数据数组变量的单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59985468/

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