Python numpy解包函数

SunnyIsaLearner

我希望将弧度数组转换为range[0, 2*pi)numpy unwrap函数正是我需要的

但是,当我运行以下代码输入时a = [pi, 2*pi, 3*pi]

import numpy as np

a = np.array([np.pi, 2*np.pi, 3*np.pi])
np.unwrap(a)

我希望结果接近[pi, 0, pi]但是,输出仍然是:

array([ 3.14159265,  6.28318531,  9.42477796])

它没有展开。但是,如果我改为运行以下命令而不使用numpy.pi

a = np.array([3.14159265,  6.28318531,  9.42477796])
np.unwrap(a)

输出正确:

array([  3.14159265e+00,   2.82041412e-09,   3.14159265e+00])

到底是怎么回事?

BZ1

尽管已接受的答案可以为您提供所需的结果,但我认为这并没有成为问题的核心,如果我正确地解释了您的问题,那么您实际上是想包装自己的阶段,而不是拆开它。

np.unwrap在这种情况下,对数据进行很小的更改的原因实际上是np.unwrap计算结果的幼稚方式的结果。它只是在数据中查找局部不连续性并进行相应调整。以这种方式获得所需的结果是采样错误的结果。换句话说,如果您通过对get进行插值来改善采样a = np.array([np.pi, 3*np.pi/2, 2*np.pi, 5*np.pi/2, 3*np.pi]),则调整数据将不再起作用。

即使采样很差,更复杂的相位解缠方法(例如,傅立叶变换方法)也会使数据解缠。

如果您确实想将数据限制为[0, 2*pi)np.unwrap则与您想要相反我可以想到的最简单的包装相位的方法是使用模运算符:

import numpy as np

a = np.array([np.pi, 2 * np.pi, 3 * np.pi])
a_wrapped = a % (2 * np.pi)
print (a_wrapped)

当然,由于采样错误,np.unwrap(a_wrapped)不会返回原始值a,因此可能不清楚这是相反的。但是,如果您改进抽样,则确实会返回原始样本a

import numpy as np

a = np.arange(0, 4 * np.pi, np.pi/10)
print (a)
a_wrapped = a % (2 * np.pi)
print (a_wrapped)
a = np.unwrap(a_wrapped)
print (a)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章