如何通过使用插值增加其大小来拉伸此向量?

时间:2018-02-13 18:39:04

标签: python numpy interpolation

我有很多不同大小的矢量,每个矢量都有很多值。如何增加向量的大小?我应该使用插值吗?以下是其中一个向量的示例:

a = np.array(data['col1'])
a
    array([
    ....
    ....
    1.58795599271e-18,
    1.44291516626e-17,
    9.38543028522e-18,
    1.26688244651e-17,
    2.92337581236e-18,
    3.94537400278e-18,
    3.5377910957e-18,
    2.28690272401e-18
    ....
    .... ])

数组的大小为2244。

如何将尺寸更改为3153?

1 个答案:

答案 0 :(得分:1)

np.interp执行一维线性插值:

import numpy as np

# suppose this is your given array
size = 2244
data = np.random.random(size)

xloc = np.arange(size)
newsize = 3153
new_xloc = np.linspace(0, size, newsize)
new_data = np.interp(new_xloc, xloc, data)

您可以使用scipy.interpolate.interp1d进行最近,二次,三次或更高阶的样条插值。

如果您的“很多向量”位于Pandas DataFrame中,您可能正在寻找DataFrame.interpolate,但是相对于固定的DataFrame索引(在上面扮演new_xloc的角色进行插值) )。它对您的用处可能取决于您在DataFrame中如何布置各种大小的向量以及您想要的结果。