Python:计算3D网格的渐变

时间:2012-10-30 14:43:04

标签: python numpy grid gradient

我有一个粒子立方体,我投射到2D网格上,通过细胞中的云将粒子投射到网格上,并用标量加权。

然后我会喜欢每个网格点处的标量渐变。在2D中,我使用np.gradient进行此操作,得到两个在x和y方向具有渐变的数组:

gradx, grady = np.gradient(grid)

有没有人知道如何将其概括为3维度? 3D中的细胞中的云很好,但我留下了一个形状为(700,700,700)的网格。

据我所知np.gradient无法解决这个问题?

谢谢, 丹尼尔

1 个答案:

答案 0 :(得分:3)

Numpy文档表明gradient适用于任何维度:

  

numpy.gradient(f, *varargs)

     

返回N维数组的渐变。

     

使用内部和中部的中心差异计算梯度   边界的第一个差异。因此返回的梯度具有   与输入数组的形状相同。

     

参数:

     

f: array_like.包含样本的N维数组   标量函数。

     

*varargs: 0,1或N个标量指定每个方向的采样距离,即:dx,dy,dz,...默认距离为1.

     

退货:

     

g: ndarray. N个数组   与f相同的形状给出f的导数   尺寸。

似乎你应该能够像你期望的那样将二维码扩展到3D。