我有这些数据:
X = [[10, 6, 0], [8, 6, 0], [4, 3, 0]]
Y = [[29, 28, 27], [26, 25, 24], [23, 22, 21]]
我需要在X中的值之间进行插值,例如:
D = np.linspace(10,0,num = 6)
Out:[ 0. 2. 4. 6. 8. 10.]
所以结果应该是:
"D" "Y[0]" "Y[1]" "Y[2]"
0 27 24 21
2 ? ? ?
4 ? ? 23
6 28 25 ?
8 ? 26 ?
10 29 ? ?
我知道有np.interp()
我试过,它只适用于一维列表:
z =[0,5,10]
v= [29,28,27]
x = np.linspace(10,0,num = 4)
d=np.interp(x, z, v)
print (d)
但是,如果我有列表清单,它就会起作用。
答案 0 :(得分:2)
使用zip
。此外,您似乎想要反转子列表。也许是这样的:
points = np.linspace(0,10,num = 6)
cols = (points,) + tuple(np.interp(points,x[::-1],y[::-1]) for x,y in zip(X,Y))
np.stack(cols,axis=1)
有输出:
array([[ 0. , 27. , 24. , 21. ],
[ 2. , 27.33333333, 24.33333333, 21.66666667],
[ 4. , 27.66666667, 24.66666667, 23. ],
[ 6. , 28. , 25. , 23. ],
[ 8. , 28.5 , 26. , 23. ],
[ 10. , 29. , 26. , 23. ]])
这表示插值。您可能希望在某些列的某些条目中使用外推法。