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

2024-09-28 21:58:09 发布

您现在位置: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))


Tags: 数据元素原始数据错误np精度sqrt手动
1条回答
网友
1楼 · 发布于 2024-09-28 21:58:09

好吧,看来我只是忽略了符号惯例的一个拼写错误。。。使用numpy函数的输出实际上是正确的。问题源于-1**2!=(-1) **2和我在计算中滥用括号。。。我想我们每隔一段时间都得花上几个小时搜寻大脑放屁

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

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

(注意第二项的括号分组…)

相关问题 更多 >