I 必须数组:
线性的;
x = array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, 1.3, 1.4])
以及非线性的相应结果;
y = array([ 13.07, 13.7 , 14.35, 14.92, 15.5 , 16.05, 16.56, 17.12,
17.62, 18.08, 18.55, 19.02, 19.45, 19.88, 20.25])
现在:我想将 y 转换为线性间隔数组并找到相应的 x
插值。
即在以下情况下找到 x
y = array([ 13. , 13.5, 14. , 14.5, 15. , 15.5, 16. , 16.5, 17. , 17.5, 18. , 18.5, 19. , 19.5, 20. ])
提前谢谢。
我使用以下方法使用 numpy 中的 interp 函数:
ynew = np.linspace(np.min(y), np.max(y), len(y))
xnew = np.interp(ynew, y, x)
即在 np.interp 函数中交换 x 和 y。
这总是正确的吗?或者它会因为某种情况而崩溃。
除非我错过了什么,否则这种情况需要对numpy.interp
进行简单的调用。 你想从y
预测x
,这与人们通常做变量定义的方式相反,但除了皱纹之外,你所需要的只是:
import numpy as np
x = np.array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, 1.3, 1.4])
y = np.array([ 13.07, 13.7 , 14.35, 14.92, 15.5 , 16.05, 16.56, 17.12,
17.62, 18.08, 18.55, 19.02, 19.45, 19.88, 20.25])
ynew = np.array([ 13. , 13.5, 14. , 14.5, 15. , 15.5, 16. , 16.5, 17. , 17.5, 18. , 18.5, 19. , 19.5, 20. ])
xnew = np.interp(ynew, y, x)
print xnew
它给出作为输出:
[ 0. 0.06825397 0.14615385 0.22631579 0.3137931 0.4
0.49090909 0.58823529 0.67857143 0.776 0.8826087 0.9893617
1.09574468 1.21162791 1.33243243]