小编Chr*_*ris的帖子

用于网格旋转的 Numpy einsum()

我有一组使用 meshgrid() 生成的 3d 坐标。我希望能够围绕 3 个轴旋转这些。

我尝试解开网格并在每个点上旋转,但网​​格很大并且内存不足。

这个问题使用 einsum() 在 2d 中解决了这个问题,但是在将其扩展到 3d 时我无法弄清楚字符串格式。

我已经阅读了有关 einsum() 及其格式字符串的其他几页,但一直无法弄清楚。

编辑:

我称我的网格轴为 X、Y 和 Z,每个轴的形状为 (213, 48, 37)。此外,当我尝试将结果放回网格时,实际出现了内存错误。

当我试图“解开”它以逐点旋转时,我使用了以下函数:

def mg2coords(X, Y, Z):
    return np.vstack([X.ravel(), Y.ravel(), Z.ravel()]).T
Run Code Online (Sandbox Code Playgroud)

我用以下内容循环了结果:

def rotz(angle, point):
    rad = np.radians(angle)
    sin = np.sin(rad)
    cos = np.cos(rad)
    rot = [[cos, -sin, 0],
           [sin,  cos, 0],
           [0, 0, 1]]

    return np.dot(rot, point)
Run Code Online (Sandbox Code Playgroud)

旋转后,我将使用这些点进行插值。

python numpy numpy-einsum

6
推荐指数
1
解决办法
1358
查看次数

标签 统计

numpy ×1

numpy-einsum ×1

python ×1