我必须使用数组:
线性的;
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。
这总是正确的吗?或者它会因某些情况而崩溃。
答案 0 :(得分:4)
除非我遗漏了某些内容,否则此案例会要求numpy.interp
进行简单的调用。您希望从x
预测y
,这与人们通常的变量定义相反,但除此之外,您只需要:
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]