【发布时间】:2021-07-19 10:14:33
【问题描述】:
可能是一个简单的问题,但假设您有想要逆时针旋转 90 度的 2d 法线数据,为此您可以使用 rotation matrices 并使用 theta = np.pi / 2 构造一个,然后将数据乘以您的旋转矩阵。这很好用,但是当我尝试将数据旋转 45 度 (np.pi / 4) 时,它不起作用。它似乎顺时针旋转了数据,但翻转角度的符号不会改变结果图。如何将数据逆时针旋转 45 度?
cov = np.array([[1, .7], [.7, 1]])
data = np.random.multivariate_normal(np.zeros(2), cov, size=10000)
theta = np.pi / 4
rot_matrix = np.array([[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]])
data_rot = (rot_matrix @ data.T).T
fig, axes = plt.subplots(2)
axes[0].scatter(data[:, 0], data[:, 1])
axes[1].scatter(data_rot[:, 0], data_rot[:, 1])
fig.show()
产生图像:
(而我预计逆时针旋转 45 度会使数据看起来像一条垂直线)同时将 theta 更改为 np.pi / 2 会产生正确的图像:
【问题讨论】:
标签: python matplotlib matrix rotation rotational-matrices