在 Python 中使用 netCDF4 读取变量时如何指定精度?
How to specify precision when reading in variables using netCDF4 in Python?
我正在尝试读取 ADCP(洋流速度)数据并 clean/process 它。数据在我使用的 .nc
文件的 x
和 y
分量速度中给出,因此我必须计算分量的合成速度和角度。当使用 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.sqare
和 np.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))
(注意第二项括号的分组...)
我正在尝试读取 ADCP(洋流速度)数据并 clean/process 它。数据在我使用的 .nc
文件的 x
和 y
分量速度中给出,因此我必须计算分量的合成速度和角度。当使用 np.square 对分量速度范围内与仪器本身误差幅度相同的各个元素进行平方时,我遇到了精度问题。
我怀疑这个错误是由于原始数据的长度造成的(例如-0.02162790298461914
)。我想将原始数据的精度设置为0.001
(ADCP的固有误差)并重新计算,看计算误差是否减小。使用 infile.variables['variable'][:]
读取数据时,有没有办法手动设置精度?如果可以,我该怎么做?或者可能有一个比 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.sqare
和 np.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))
(注意第二项括号的分组...)