我正在尝试使用函数numpy.unwrap
来纠正某些阶段
我有2678399条记录的长矢量,其中包含2个角度之间的弧度差异。该数组包含nan值,但我认为不相关,因为unwrap独立应用于每个记录。
当我应用unwrap时,400记录会在数组的其余部分生成nan值
如果我将np.unwrap应用于原始数组的一个切片就可以正常工作。
这可能是此功能中的错误吗?
d90dif=(df2['d90']-df2['d90avg'])*(np.pi/180)#difference between two angles in radians
df2['d90dif']=np.unwrap(d90dif.values)#unwrap to the array to create new column
d90dif[700:705]#angle difference for some records
2013-01-01 00:11:41 0.087808
2013-01-01 00:11:42 0.052901
2013-01-01 00:11:43 0.000541
2013-01-01 00:11:44 0.087808
2013-01-01 00:11:45 0.017995
dtype: float64
df2['d90dif'][700:705]#results with unwrap for these records
2013-01-01 00:11:41 NaN
2013-01-01 00:11:42 NaN
2013-01-01 00:11:43 NaN
2013-01-01 00:11:44 NaN
2013-01-01 00:11:45 NaN
Name: d90dif, dtype: float64
test=d90dif[700:705]
2013-01-01 00:11:41 0.087808
2013-01-01 00:11:42 0.052901
2013-01-01 00:11:43 0.000541
2013-01-01 00:11:44 0.087808
2013-01-01 00:11:45 0.017995
dtype: float64
unw=np.unwrap(test.values)
array([ 0.08780774, 0.05290116, 0.00054128, 0.08780774, 0.01799457])
现在没关系。如果我在unwrap()中使用数据帧输入,那么也可以正常工作
答案 0 :(得分:1)
通过查看documentation of unwrap,似乎NaN会产生影响,因为函数正在查看相邻元素的差异以检测阶段中的跳跃。
答案 1 :(得分:0)
似乎纳米值发挥了重要作用
test
2013-01-01 00:11:41 0.087808
2013-01-01 00:11:42 0.052901
2013-01-01 00:11:43 0.000541
2013-01-01 00:11:44 NaN
2013-01-01 00:11:45 0.017995
dtype: float64
如果列中有nan,那么一切都变成了nan
np.unwrap(test)
array([ 0.08780774, 0.05290116, 0.00054128, nan, nan])
我会说这是一个错误,但......