如何在numpy中旋转索引数组?

我有一个网格,它是一个形状为 numpy 的数组(522, 476)

然后我有另一个 numpy 数组,它是 shape 的单个 xy 点(网格的索引)的轨迹(2, 3866)

我使用np.rot90(grid). 我的问题是如何以相同的方式旋转轨迹,以便各个 xy 点继续与网格对齐。


慕勒3428872
浏览 152回答 2
2回答

翻翻过去那场雪

如果您总是只想旋转 90 度并且始终保持相同的方向(因此rot90没有任何其他参数),您可以使用以下公式:idx2 = np.array([[n.shape[0]-1-x[1], x[0]] for x in idx])假设idx是您的索引数组 (2, 3866) 和n您想要索引的网格 (522, 476)。它只是使用单次旋转对元素的作用的知识,即将第一维切换到第二维,并使第二维从末尾开始计算为第一维。

精慕HU

您可以定义一个旋转函数:def rotate(origin, point, angle):    """    Rotate a point counterclockwise by a given angle around a given origin.    The angle should be given in radians.    """    ox, oy = origin    px, py = point    qx = ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy)    qy = oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy)    return qx, qy然后将此函数应用于轨迹的所有 (X,Y) 点。origin = tuple(0, 0)newTrajectory = []for i in range(0:len(trajectory[0])):    p = tuple(trajectory[i][0], trajectory[i][1])    newP = rotate(origin, p, math.pi/2)    row = [newP[0], newP[1]]    newTrajectory.append(row)最好的事物
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python