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

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

我正在尝试读取 ADCP(洋流速度)数据并 clean/process 它。数据在我使用的 .nc 文件的 xy 分量速度中给出,因此我必须计算分量的合成速度和角度。当使用 np.square 对分量速度范围内与仪器本身误差幅度相同的各个元素进行平方时,我遇到了精度问题。

我怀疑这个错误是由于原始数据的长度造成的(例如-0.02162790298461914)。我想将原始数据的精度设置为0.001(ADCP的固有误差)并重新计算,看计算误差是否减小。使用 infile.variables['variable'][:] 读取数据时,有没有办法手动设置精度?如果可以,我该怎么做?或者可能有一个比 np.square(array)?

错误更少的 numpy 方法

一个错误的例子:

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))

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