Numpy ValueError: shapes (4,4) and (3,) not aligned: 4 (dim 1) != 3 (dim 0)

Numpy ValueError: shapes (4,4) and (3,) not aligned: 4 (dim 1) != 3 (dim 0)

我想通过 numpytestarray 中的旋转矩阵旋转向量 vc,但我得到一个 ValueError。

这是我的代码( 减少到必需品)

import numpy as np

vc = np.array([0,0,1])

numpytestarray = np.array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]])

new_vc = numpytestarray.dot(vc)
print(new_vc)

我该如何解决这个问题?

你的旋转矩阵和向量应该大小相同,例如:

  • 大小为 2x2 的旋转矩阵对应于二维向量 [x, y]
  • 的二维旋转
  • 大小为 3x3 的旋转矩阵对应于 3D 向量 [x, y, z]
  • 的 3D 旋转

您的矢量 vc 是 3D 的 [0, 0, 1],但是您尝试使用大小为 4x4 的旋转矩阵在 4 个维度上旋转它。

您需要更改矢量大小:

import numpy as np
vector = np.array([0,0,0,1])
rotation_matrix = np.array([
    [-1, 0, 0, 0],
    [0, -1, 0, 0],
    [0, 0, -1, 0],
    [0, 0, 0, -1]])
rotated = rotation_matrix.dot(vector)
print(rotated) # [0, 0, 0, -1]

或旋转矩阵大小:

import numpy as np
vector = np.array([0,0,1])
rotation_matrix = np.array([
    [-1, 0, 0],
    [0, -1, 0],
    [0, 0, -1]])
rotated = rotation_matrix.dot(vector)
print(rotated) # [0, 0, -1]