给定一些形状为 20x45 的数据,其中每一行都是一个单独的数据集,比如 20 条不同的正弦曲线,每条有 45 个数据点,我将如何获得相同的数据,但形状为 20x100?
换句话说,我有一些形状为 20x45 的数据 A 和一些长度为 20x100 的数据 B,我希望 A 的形状为 20x100,以便更好地比较它们。
这适用于 Python 和 Numpy/Scipy。
我假设它可以用样条曲线来完成,所以我正在寻找一个简单的例子,可能只是 2x10 到 2x20 或类似的东西,其中每一行只是一条线,来演示解决方案。
谢谢!
最佳答案
当我输入这个例子时,Ubuntu 打败了我,但他的例子只是使用线性插值,这可以用 numpy.interpolate 更容易地完成...(区别只是 scipy.interpolate.interp1d 中的关键字参数,但是)。
我想我会包括我的示例,因为它显示了使用 scipy.interpolate.interp1d 和三次样条...
import numpy as np
import scipy as sp
import scipy.interpolate
import matplotlib.pyplot as plt
# Generate some random data
y = (np.random.random(10) - 0.5).cumsum()
x = np.arange(y.size)
# Interpolate the data using a cubic spline to "new_length" samples
new_length = 50
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = sp.interpolate.interp1d(x, y, kind='cubic')(new_x)
# Plot the results
plt.figure()
plt.subplot(2,1,1)
plt.plot(x, y, 'bo-')
plt.title('Using 1D Cubic Spline Interpolation')
plt.subplot(2,1,2)
plt.plot(new_x, new_y, 'ro-')
plt.show()
关于python - 向数据添加更多样本点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072844/