Python (500003000)numpy阵列沿轴=-1的快速插值
我有一个形状为(50000,3000)的二维地震数据阵列 我需要1d插值轴=-1中的所有内容 如果z=值,t0=值时间,tx=新时间,我当前正在做Python (500003000)numpy阵列沿轴=-1的快速插值,python,numpy,scipy,Python,Numpy,Scipy,我有一个形状为(50000,3000)的二维地震数据阵列 我需要1d插值轴=-1中的所有内容 如果z=值,t0=值时间,tx=新时间,我当前正在做 for i in range(dataset.size): result[i,:] = np.interp(tx[i,:], t0[i,:], z[i,:]) 毫不奇怪,这需要几个小时 t0已排序,但采样不规则 对tx进行分类并定期取样 有没有关于大幅加快代码执行速度的建议 仅限于numpy/scipy解决方案取决于您的目标。如果知道
for i in range(dataset.size):
result[i,:] = np.interp(tx[i,:], t0[i,:], z[i,:])
毫不奇怪,这需要几个小时
- t0已排序,但采样不规则
- 对tx进行分类并定期取样
仅限于numpy/scipy解决方案取决于您的目标。如果知道感兴趣的区域在哪里,可以使用数组切片来插值数据的一小部分。或者,您可能希望通过使用统计指标了解全局
我认为没有办法显著加快
np.interp()
本身的速度,因为它实际上遍历了数据中的所有点。您可以从scipy.interpolate
尝试interp1d()
,但我认为性能不会有显著差异。这是对地震数据进行几何校正的一种形式。因此,必须对整个数据集执行此操作。您是否可以提供更多的代码,或许是一个我可以复制/粘贴到编辑器中并开始使用的最小工作示例?我需要知道什么类型的dataset
(numpy数组?)以及z
来自哪里。另外,tx
的行是否都不同?t0
的行是否都不同?