Numpy ValueError:形状 (4,4) 和 (3,) 未对齐:4 (dim 1) != 3 (dim 0)

发布于 2025-01-19 07:14:29 字数 297 浏览 0 评论 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)

我该如何解决这个问题?

I want to Rotate the Vector vc by the rotation matrix in the numpytestarray but i get an ValueError.

This is my Code (
reduced to the essentials)

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)

How can i Fix this Problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬花如无物 2025-01-26 07:14:29

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

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

你的向量 vc 是 3D [0, 0, 1],但是你尝试使用 size 的旋转矩阵在 4 维中旋转它4x4。

您需要更改向量大小:

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]

Your rotation matrix and vector should be the same size, e.g.:

  • rotation matrix of size 2x2 corresponds to rotation in 2D, of a 2D vector [x, y]
  • rotation matrix of size 3x3 corresponds to rotation in 3D, of a 3D vector [x, y, z]

Your vector vc is in 3D [0, 0, 1], however you try to rotate it in 4 dimentions using rotation matrix of size 4x4.

You need to either change vector size:

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]

or rotation matrix size:

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]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文