python - (50000,3000) numpy 数组沿 axis=-1 的快速插值

标签 python numpy scipy

我有一个形状为 (50000, 3000) 的二维地震数据阵列

我需要对 axis=-1 中的所有内容进行 1d 插值

如果 z=值,t0=值时间,tx=新时间,我当前正在做

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(),但我再次认为不会有显着的性能差异。

关于python - (50000,3000) numpy 数组沿 axis=-1 的快速插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034623/

相关文章:

python - 平均绝对误差 - Python

python - Python 中具有分数次幂的二项式展开

python - 用于数据库驱动程序的Gevent/Eventlet猴子修补

python - 当两个数据帧的列名称匹配时查找值

Python 3 - 从 HTTP 请求响应中获取一些字符串

python - scipy.sparse 矩阵的点例程产生错误

python - 对直方图定义的分布进行反卷积

python - 为什么 Liza Daly 的 fast_iter 使用 while 循环而不是 if 语句?

python - 如何在 numpy 数组中使用多个过滤器?

python - 查找重叠的列/行集