Python 如何加速三维矢量的最近邻插值?

Python 如何加速三维矢量的最近邻插值?,python,Python,我在网格上定义了一个向量场,就像这样 我有很多观点(x,y,z)是这些点的坐标。我想找到这些点上的向量值。我使用最近邻插值来计算这些点上的向量,但是这里有很多点(~4M),我的代码运行速度很慢。下面是我的示例代码: from scipy.ndimage import map_coordinates import numpy as np # examples of vectors `v` on grid vx=np.random.randn(500,100,100) vy=np.random

我在网格上定义了一个向量场,就像这样

我有很多观点
(x,y,z)
是这些点的坐标。我想找到这些点上的向量值。我使用最近邻插值来计算这些点上的向量,但是这里有很多点(~4M),我的代码运行速度很慢。下面是我的示例代码:

from scipy.ndimage import map_coordinates
import numpy as np

# examples of vectors `v` on grid 
vx=np.random.randn(500,100,100)
vy=np.random.randn(500,100,100)
vz=np.random.randn(500,100,100)

# examples of locations `p`
x=np.random.rand(4000000)*500
y=np.random.rand(4000000)*100
z=np.random.rand(4000000)*100

# my solution at the moment
coords=np.array([x,y,z])

out = np.zeros((3, coords.shape[1]))
out[0]= map_coordinates(vx, coords, order=0)
out[1]= map_coordinates(vy, coords, order=0)
out[2]= map_coordinates(vz, coords, order=0)

有没有想法加速3D中的最近邻插值?

如果这有点回避了这个问题,很抱歉,但是你能不能将点的向量场定义为一个函数?数学向量场是连续的。不管怎样,在给定(x,y,z)的情况下,你能定义一个生成向量的函数吗?在这个玩具示例中,它将是def-vec(x,y,z):return(random.randn(500100100))@Alan我想我没有清楚地定义我的向量场。所以向量场不是由(x,y,z)定义的,它是在三维空间中定义的。我只知道它在网格(或笛卡尔网格)上的值。(x,y,z)是3D空间中的一些随机点,我想得到这些点上向量场的值,在这种情况下,我选择使用最近邻来计算它。抱歉,如果这稍微回避了这个问题,但是你能不能将点的向量场定义为一个函数?数学向量场是连续的。不管怎样,在给定(x,y,z)的情况下,你能定义一个生成向量的函数吗?在这个玩具示例中,它将是def-vec(x,y,z):return(random.randn(500100100))@Alan我想我没有清楚地定义我的向量场。所以向量场不是由(x,y,z)定义的,它是在三维空间中定义的。我只知道它在网格(或笛卡尔网格)上的值。(x,y,z)是三维空间中的一些随机点,我想得到这些点上向量场的值,在这种情况下,我选择使用最近邻来计算它。