[英]numpy array is converting a 2D array into 3D array which is giving me an error
我正在嘗試從四元數中找到旋轉矩陣。 我正在使用 numpy 和 scipy 中的預定義函數。 我已經嘗試了很長時間,甚至嘗試更改數組的尺寸。 起初我得到一個 4D 數組。 類似於 (3,4,17291,1)。 我重塑並縮小了尺寸。 即使在那之后,該函數也采用 3D 數組 (4, 17291, 1)。
quat_w = dat[[" IMU2.quat_w"]]
quat_i = dat[[" IMU2.quat_i"]]
quat_j = dat[[" IMU2.quat_j"]]
quat_k = dat[[" IMU2.quat_k"]]
len_array = len(quat_w)
quat_temp = np.array([quat_w, quat_i, quat_j, quat_k])
quat = np.reshape(quat_temp, (4, len_array))
from scipy.spatial.transform import Rotation as R
rot = R.from_quat([quat_w, quat_i, quat_j, quat_k])
錯誤:
ValueError Traceback (most recent call last)
Input In [86], in <cell line: 2>()
1 from scipy.spatial.transform import Rotation as R
----> 2 rot = R.from_quat([quat_w, quat_i, quat_j, quat_k])
File rotation.pyx:626, in scipy.spatial.transform.rotation.Rotation.from_quat()
File rotation.pyx:515, in scipy.spatial.transform.rotation.Rotation.__init__()
ValueError: Expected `quat` to have shape (4,) or (N x 4), got (4, 17219, 1).
Rotate.from_quat
期望得到一個四元數列表。 你沒有通過那個。 您正在傳遞一個包含四個坐標列表的列表。 它希望第一行有 [x,y,z,w],然后下一行有另一個 [x,y,z,w]。 這意味着你需要轉置你擁有的東西。
你必須做這樣的事情,當然未經測試,因為我們沒有你的數據:
quat_w = dat[[" IMU2.quat_w"]]
quat_i = dat[[" IMU2.quat_i"]]
quat_j = dat[[" IMU2.quat_j"]]
quat_k = dat[[" IMU2.quat_k"]]
quat = np.array([quat_i, quat_j, quat_k, quat_w]).T
from scipy.spatial.transform import Rotation as R
rot = R.from_quat(quat)
我在這里假設quat_w
和朋友只是組件的向量。 也就是說,一維數字列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.