interpolation based on one array values

99封情书 提交于 2019-12-12 06:38:13

问题


I have two arrays with values:

x = np.array([100, 123, 123, 118, 123])
y = np.array([12, 1, 14, 13])

I want to evaluate for example the function:

def func(a, b):
    return a*0.8 * (b/2)

So, I want to fill the y missing values.

I am using:

import numpy as np
from scipy import interpolate

def func(a, b):
    return a*0.8 * (b/2)


x = np.array([100, 123, 123, 118, 123])
y = np.array([12, 1, 14, 13])

X, Y = np.meshgrid(x, y)

Z = func(X, Y)

f = interpolate.interp2d(x, y, Z, kind='cubic')

Now, I am not sure how to continue from here.If I try:

xnew = np.linspace(0,150,10)
ynew = np.linspace(0,150,10)

Znew = f(xnew, ynew)

Znew is filled with nan values.

Also, I want to make the opposite.

If x is smaller than y and I want to interpolate always based on x values.

So, for example:

x = np.array([1,3,4]) y = np.array([1,2,3,4,5,6,7])

I want to remove values from y now.

How can I proceed with this?


回答1:


To interpolate from a 1d array you can use np.interp as follow :

np.interp(np.linspace(0,1,len(x)), np.linspace(0,1,len(y)),y)

you can have a look at the documentation for full details but in short :

  • consider that your array y have value with references from 0 to 1 (example [5,2,6,3,9] will have indexes [0,0.25,0.5,0.75,1])
  • The second and the third argument of the function are the indexes and the vector y
  • The first argument is the indexes of the interpolated value of y

as an example :

>>> y = [0,5]
>>> indexes = [0,1]
>>> new_indexes = [0,0.5,1]
>>> np.interp(new_indexes, indexes, y)
[0,2.5,5]


来源:https://stackoverflow.com/questions/42131840/interpolation-based-on-one-array-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!