我有以下代码用于插入 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 时都会发生变化。