【问题标题】:interpolation between arrays in pythonpython中数组之间的插值
【发布时间】:2017-01-06 11:23:32
【问题描述】:

在两个数组之间进行插值以获得新数组的最简单和最快的方法是什么。

例如,我有 3 个数组:

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

x,y 对应于数据点,z 是一个参数。所以z=0 x 数组有效,z=5 y 数组有效。但我需要为z=1 获取新数组。所以可以通过以下方式轻松解决:

a = (y-x)/(z[1]-z[0])*1+x

问题是数据不是线性相关的,并且有超过 2 个包含数据的数组。也许可以使用某种样条插值?

【问题讨论】:

  • 你研究过scipy interpolate 文档吗?
  • 在提出问题之前,我已经查看了该问题,但没有找到任何直接的解决方案。你知道如何解决它吗?

标签: python arrays numpy scipy interpolation


【解决方案1】:

这是一个单变量到多变量的回归问题。 Scipy 支持单变量到单变量回归,以及多变量到单变量回归。但是您可以改为迭代输出,所以这不是一个大问题。以下是如何完成的示例。我稍微更改了变量名称并添加了一个新点:

import numpy as np
from scipy.interpolate import interp1d

X = np.array([0, 5, 10])
Y = np.array([[0, 1, 2, 3, 4, 5],
              [5, 4, 3, 2, 1, 0],
              [8, 6, 5, 1, -4, -5]])

XX = np.array([0, 1, 5])  # Find YY for these

YY = np.zeros((len(XX), Y.shape[1]))
for i in range(Y.shape[1]):
    f = interp1d(X, Y[:, i])
    for j in range(len(XX)):
        YY[j, i] = f(XX[j])

所以YYXX 的结果。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多