Numpy unwrap 忽略 NaN

Numpy unwrap ignoring NaN

我有一个带有风向记录的长 numpy 数组,我试图在 运行 算法之前使用 numpy 的 unwrap 来检测数据中的跳跃。数据包含 NaN,而 numpy 似乎无法处理它。一旦遇到一个 NaN,unwrap 返回的所有后续数据点也将转换为 NaN。有解决办法吗?

我认为我的问题归结为与 here 发布的相同问题,但仅得出错误与数据中的 NaN 相关的结论,并且未提供任何解决方案。

假设您想保留 NaN,最简单的解决方案是在将数组传递给 unwrap 之前屏蔽掉 NaN,并使用相同的屏蔽将结果写回:

a[~np.isnan(a)] = np.unwrap(a[~np.isnan(a)])

如果想保留原来的数组,使用np.copy:

b = np.copy(a)
b[~np.isnan(b)] = np.unwrap(b[~np.isnan(b)])