我正在尝试读取ADCP(海洋当前速度)数据并对其进行清理/处理。数据以我正在使用的x
文件中的y
和.nc
组件速度给出,因此我必须从这些组件计算合成速度和角度。使用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使用total_vel
和np.sqare
在numpy数组= np.sqrt
上计算出0.3671565353870392
脚本代码:total_v = np.sqrt(np.square(x_vel) + np.square(y_vel))
答案 0 :(得分:0)
看来我只是忽略了符号约定的错字...使用numpy函数的输出实际上是正确的。问题源于-1 ** 2!=(-1)** 2以及我在计算中误用括号...猜猜我们每个人都需要花费数小时不时地寻找脑部放屁
手动输入应该是m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914) ** 2)
代替m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914 ** 2))
(请注意第二项上的括号分组...)