使用 python numpy 或 scipy 将线性数组插入非线性数组
interpolate linear array to non linear array using python numpy or scipy
我必须排列:
线性的;
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]
我必须排列:
线性的;
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
.
即在
时找到 xy = 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]