Python 沿任意曲面探测器对数据卷进行采样

Python 沿任意曲面探测器对数据卷进行采样,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,在numpy中,使用m维探针对n维数据卷进行采样的最佳方法是什么(m对于3D数据和2D切割,我一直在使用Mayavi。非常粗略地说,您需要执行以下步骤:加载数据、添加delaunay三角剖分过滤器、可视化体积、添加标量切割平面、定位并读取数据。如果您可以导入scipy,那么您可以从插值模块尝试interp2d(从scipy.interpolate导入interp2d).@Katsu-谢谢,但inter2pd只适用于2D。我需要ND。它似乎可以满足您的需要。@Katsu,再次感谢,这是解决一半问题

在numpy中,使用m维探针对n维数据卷进行采样的最佳方法是什么(m对于3D数据和2D切割,我一直在使用Mayavi。非常粗略地说,您需要执行以下步骤:加载数据、添加delaunay三角剖分过滤器、可视化体积、添加标量切割平面、定位并读取数据。

如果您可以导入scipy,那么您可以从插值模块尝试interp2d(从scipy.interpolate导入interp2d).@Katsu-谢谢,但inter2pd只适用于2D。我需要ND。它似乎可以满足您的需要。@Katsu,再次感谢,这是解决一半问题的好答案。在griddata之前,我需要的是一个广义mgrid。griddata适用于使用广义mgrid生成的探测点在数据块中执行插值。谢谢Christian,我知道这种方法。VTK也提供了这方面的工具,但我想我想直接用numpy解决它,因为它只是矩阵操作+插值。
o = [0, 0, 0] # origin
v1 = [1, 0, 0]; l1=1 # First vector and length
v2 = [0, 1, 0]; l2=1 # Second vector and length

ds1,ds2 = 10,10 # samples per direction

l1x,l1y,l1z = np.linspace(o[0],v1[0]*l1,ds1),np.linspace(o[1],v1[1]*l1,ds1),np.linspace(o[2],v1[2]*l1,ds1)
l2x,l2y,l2z = np.linspace(o[0],v2[0]*l2,ds2),np.linspace(o[1],v2[1]*l2,ds2),np.linspace(o[2],v1[2]*l2,ds2)
llx, lly, llz = l1x, l1y, l1z

# shift points in direction of 2nd vector and append 
for i in range(1,ds2):
  llx = np.hstack((llx,l1x+l2x[i]))
  lly = np.hstack((lly,l1y+l2y[i]))
  llz = np.hstack((llz,l1z+l2z[i]))

ptcoords = np.vstack((llx,lly,llz)).T 
base = l[0] # if l[0] is the only one
for ll in l[1:]:
  n = ll.shape[0]
  nb = base.shape[0]
  base = np.repeat(ll,nb,0) + np.vstack(np.hsplit(np.tile(base,n),n))