爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: 贫道敬孔

[经验总结] 【重磅】用NCL的思想理解Python【持续更新】

[复制链接]

新浪微博达人勋

 楼主| 发表于 2024-1-13 17:54:12 | 显示全部楼层
灭火器 发表于 2024-1-10 10:04
关于 numpy 扩充维度,官方文档介绍了广播的具体规则:两个数组进行运算时形状从右往左对齐,缺失的维度长 ...

学习一个
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2024-1-13 17:58:05 | 显示全部楼层
Reality 发表于 2024-1-12 10:22
赞一个,纠正一个小问题,python自己写得nc也可以通过.sel和.loc来定位,主要是时间time写入时变 ...

学习一个
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2024-1-13 18:00:16 | 显示全部楼层
XiaoMaFenJu 发表于 2024-1-11 21:58
是的,用np.newaxis是比较方便的

我说的”非官方“的NC数据主要是用CDO生成的NC数据,换做NCL直接就读了,但是这样简单计算过的数据似乎PYTHON不太能识别,所以这一点确实PYTHON不方便
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-1-15 10:14:53 | 显示全部楼层
{:eb502:}{:eb502:}{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-1-16 10:23:16 | 显示全部楼层
学习一个!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2024-5-25 22:30:48 | 显示全部楼层
继续更:
PYTHON(在经过ifft计算后,仍会产生有虚数的情况,这时候可以使用.real来仅取实部,但是此时取实部后的)数组显示的是float64(在spyder右上角可以看到),若生成二进制文件用.tofile没问题,但是,若需要NCL读取,一定要p = fbindirread(path, 0, dims, "double") ,而非一般的..."float"),即NCL的float64的格式是"double"!否则按照"float"读取,则会出现量级是30+以上的错误!!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2024-5-26 10:16:13 | 显示全部楼层
继续更
python将名为ampl的float64的数组转为float32
ampl_float32 = ampl.astype(np.float32)

python对一个数组dat赋予“属性”后,有的计算又不需要属性(比如要储存成二进制),
此时用dat1 = dat.values即可
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-5-26 11:10:16 | 显示全部楼层
学习一个!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2024-5-26 17:37:36 | 显示全部楼层
顶一下,持续关注
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2024-5-29 22:04:36 | 显示全部楼层
据我个人验证,NCL无法实现MATLAB中fft/ifft的功能,比如NCL的cfftf/cfftb, ezfftf/ezfftb, fft2df/fft2db,都不可以。而且除了cfftf/cfftb,后二者在前向fft后还会使得被“变换”的那一维减半(奇数还得减一再减半),如果按照原理的话用的是“实傅里叶变换”的原理,如果是包含复数的傅里叶变换维度是不变的。而NCL唯一的复傅里叶变换的函数,cfftf/cfftb,计算维度是不变,但是可能是受限于NCL无法表示复数,在后向的cfftb后反而多了复数那一维,以实际画图而言还要多赋一维,而且计算时还有令人费解的额外参数,所以真心建议大家不要再踩坑了。
那么问题来了,matlab没有/不熟,怎么办?用PYTHON!
python的scipy.fft中的fft/ifft和matlab的fft/ifft功能一模一样,而且有方便的axis可选想“变换”的维度,并且fft后维度不变!大家用起来吧!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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