6

我有一个粒子立方体,我已将其投影到二维网格上,通过单元格中的云将粒子投影到网格上,并通过标量对它们进行加权。

然后我想要每个网格点的标量梯度。在 2D 中,我正在这样做np.gradient,我得到了两个在 x 和 y 方向上具有梯度的数组:

gradx, grady = np.gradient(grid)

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

据我所知,np.gradient不能处理这个?

谢谢,丹尼尔

4

1 回答 1

4

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。

于 2012-10-30T14:49:36.887 回答