小编Nef*_*rin的帖子

Python 3D 插值加速

我有以下代码用于插入 3D 体积数据。

Y, X, Z = np.shape(volume)
xs = np.arange(0, X)
ys = np.arange(0, Y)
zs = np.arange(0, Z)

points = list(zip(np.ravel(result[:, :, :, 1]), np.ravel(result[:, :, :, 0]), np.ravel(result[:, :, :, 2])))
interp = interpolate.RegularGridInterpolator((ys, xs, zs), volume,
                                             bounds_error=False, fill_value=0, method='linear')
new_volume = interp(points)
new_volume = np.reshape(new_volume, (Y, X, Z))
Run Code Online (Sandbox Code Playgroud)

这段代码在 512x512x110 体积(约 2900 万个点)上执行大约需要 37 秒,这导致每个体素超过一微秒(这对我来说是不可接受的时间 - 更重要的是它使用了 4 个内核)。调用new_volume=interp(points)占用了大约 80% 的 prodecure 时间和列表创建几乎整个剩余时间。

是否有任何简单(甚至更复杂)的方法可以使此计算更快?或者有什么好的 Python 库可以提供更快的插值?我的音量和积分在每次调用此 prodecure 时都会发生变化。

python performance interpolation numpy cython

5
推荐指数
1
解决办法
3298
查看次数

标签 统计

cython ×1

interpolation ×1

numpy ×1

performance ×1

python ×1