爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 1228|回复: 16

[求助] 用Python计算SVD时出现一些问题

[复制链接]

新浪微博达人勋

发表于 2023-10-16 22:12:04 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
程序:#%%计算SVD
from xMCA import xMCA  
mca=xMCA(tmax,precip)
mca.solver()
lp, rp = svd.patterns(n=2)
le, re = svd.expansionCoefs(n=2)
frac = svd.covFracs(n=2)
print(frac)
错误:
ValueError: Left and Right field must have same time coords.
但是检查了两个变量的shape,发现都一样
实在看不出来哪里有问题,还望各位大神指点一二!



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2024-1-10 09:20:45 | 显示全部楼层
puck66 发表于 2024-1-4 14:26
最后咋处理的呢?可否给分享一下

最后要确保带入SVD计算时的数据是xarray.DataArray的格式
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-10-16 22:16:12 | 显示全部楼层
两个变量的长度如下所示,感觉很奇怪
屏幕截图 2023-10-16 221220.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-10-17 14:48:04 | 显示全部楼层
same time coords.
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-10-17 15:13:21 | 显示全部楼层

请问可以具体说说嘛,谢谢啦!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-10-18 13:49:25 | 显示全部楼层
爱吃三七花的LY 发表于 2023-10-17 15:13
请问可以具体说说嘛,谢谢啦!

(x,y,z)两个数组z的大小(就是时间长度)应该一样
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-10-18 20:36:09 | 显示全部楼层
本帖最后由 爱吃三七花的LY 于 2023-10-18 20:40 编辑
沐然丶 发表于 2023-10-18 13:49
(x,y,z)两个数组z的大小(就是时间长度)应该一样

以下是处理变量部分的程序
#%%sst场
f = xr.open_dataset('E:\DATA\sst.mnmean.V5.nc')
#转换经度坐标,将0-360,转换为-180~180
f.coords['lon'] = (f.coords['lon'] + 180) % 360 - 180
f = f.sortby(f.lon)  

# 截取热带大西洋区域(20w-0,20S-20N)3,4,5月份海温数据MAM
f_data = f.sst.loc[f.time.dt.month.isin([3,4,5])].loc['1979-01-01':'2019-01-01',20:-20,-80:20]                                
lon = f_data.lon
lat = f_data.lat
sst=f_data

#%%降水
f1 = xr.open_dataset('E:\\DATA\\precip.mon.mean.nc')
#转换经度坐标,将0-360,转换为-180~180
f1.coords['lon'] = (f1.coords['lon'] + 180) % 360 - 180
f1 = f1.sortby(f1.lon)  
f1 = f1.sortby(f1.lat, ascending=False)#纬度翻转
# 截取热带大西洋区域(20w-0,20S-20N)3,4,5月份降水数据MAM
f1_data = f1.precip.loc[f1.time.dt.month.isin([3,4,5])].loc['1979-01-01':'2019-01-01',20:-20,-80:20]                                
lon1 = f1_data.lon
lat1 = f1_data.lat
precip=f1_data

图片分别是两个变量的属性,发现这两个时间范围和长度都一样,所以很疑惑是哪里出错了。


2.png
1.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-10-20 11:19:25 | 显示全部楼层
爱吃三七花的LY 发表于 2023-10-18 20:36
以下是处理变量部分的程序
#%%sst场
f = xr.open_dataset('E:\DATA\sst.mnmean.V5.nc')

from xMCA import xMCA  
mca=xMCA(tmax,precip)
mca.solver()
lp, rp = mca.patterns(n=2)
le, re = mca.expansionCoefs(n=2)
frac = mca.covFracs(n=2)
print(frac)

你按这个代码试试
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-11-22 18:08:04 | 显示全部楼层
你好,请问您解决了吗,我也遇到了一样的问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-11-27 18:21:55 | 显示全部楼层
久咎. 发表于 2023-11-22 18:08
你好,请问您解决了吗,我也遇到了一样的问题

一直没有解决,后面焕其他方法了。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-1-4 14:26:24 | 显示全部楼层
最后咋处理的呢?可否给分享一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表