繁体   English   中英

在Python中使用netCDF4读取变量时如何指定精度?

[英]How to specify precision when reading in variables using netCDF4 in Python?

我正在尝试读取ADCP(海洋当前速度)数据并对其进行清理/处理。 数据以我使用的.nc文件的xy分量速度给出,因此我必须从这些分量计算合成的速度和角度。 使用np.square将分量速度范围内的各个元素平方成平方时,我遇到了精度问题,这些误差在仪器本身的误差范围内。

我怀疑此错误是由于原始数据的长度(例如-0.02162790298461914 )引起的。 我想将原始数据的精度设置为0.001 (ADCP的固有误差),然后重新计算以查看计算误差是否减小。 使用infile.variables['variable'][:]读取数据时,是否有一种手动设置精度的方法,如果是,我将如何处理? 还是可能有一个numpy方法的错误比np.square(array)错误小?

错误的单个示例:

x_vel = -0.02162790298461914
y_vel = -0.3665189743041992

手动计算的total_vel = 0.36588029782633846 (此手动计算是使用python使用m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914 ** 2))

sript在numpy数组上使用np.sqarenp.sqrt计算total_vel = 0.3671565353870392

脚本代码: total_v = np.sqrt(np.square(x_vel) + np.square(y_vel))

好吧,似乎我只是忽略了符号约定的错字...使用numpy函数的输出实际上是正确的。 问题源于-1 ** 2!=(-1)** 2以及我在计算中误用括号...猜猜我们所有人都必须不时地花费数小时来寻找脑部放屁

手动输入应为m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914) ** 2)

而不是m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914 ** 2))

(请注意第二项中的括号分组...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM