我有一个数组,我想插入第一个轴。目前,我正在做这样的例子:在Python中插值3d数组。如何避免循环?
import numpy as np
from scipy.interpolate import interp1d
array = np.random.randint(0, 9, size=(100, 100, 100))
new_array = np.zeros((1000, 100, 100))
x = np.arange(0, 100, 1)
x_new = np.arange(0, 100, 0.1)
for i in x:
for j in x:
f = interp1d(x, array[:, i, j])
new_array[:, i, j] = f(xnew)
我使用的数据代表一个域中的每个纬度和经度10年5天的平均值的。我想创建一个日常值的数组。
我也试过使用样条线。我真的不知道他们是如何工作的,但速度并不快。
有没有办法做到这一点,而不使用for循环? 如果必须使用for循环,还有其他方法可以加速吗?
非常感谢您的任何建议。
好点!如果OP想要真正的一维插值(而不是双线性),那么这就是要走的路。 –
这也很好。谢谢!有趣的是(至少在这种情况下)这种方法导致内插数组的平均值更接近原始数组的平均值。 – nicholaschris