沿任意曲面探针采样数据体

2024-06-28 19:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在numpy中,用m维探针(m<;n)对n维数据体进行采样的最佳方法是什么?例如,一个带有倾斜二维平面的三维阵列?这是一个工作示例代码,用于在由两个矢量v1和v2跨越的平面上创建采样点,然后将这些矢量输入ndimage.map_坐标,但我相信还有更好的方法:

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 

编辑: 我找到了一个更简洁的方法来表达这个:用l一个pxn数组的列表(例如p=3,n=10,一个10个3D点的数组,或者一个线性探针),其中m在列表中是固定的,但是n可以随元素而变化,这段代码将构建整个探测数组:

^{pr2}$

不过,我认为一个循环是可以避免的,而且需要大量的数组操作!我已经在一些3D配置上测试过了,这是一张截图。请告诉我你是否可以优雅地描述或发现一个错误。Screenshot of some 3D probing arrays


Tags: and方法l1np数组v2v1vector
1条回答
网友
1楼 · 发布于 2024-06-28 19:28:19

对于3D数据和2D切割,我一直在使用Mayavi。大致来说,您需要执行以下步骤:加载数据,添加delaunay三角剖分过滤器,可视化体积,添加标量剖切面,定位并读取数据。在

相关问题 更多 >