【发布时间】:2018-05-10 20:15:24
【问题描述】:
我想从欧拉角计算四元数。然后我想将整个四元数值存储在一列中。四元数是 numpy.ndarray。
我发现了类似的问题,但在所有解决方案中,列都存储一维值。
这是我的代码:
import transforms3d
def computeQuat(p,y,r,syscoord):
return transforms3d.euler.euler2quat(p, y, r, syscoord)
dataClassic['Quaternion'] = (dataClassic.apply(lambda x: computeQuat(x['Pitch_Init'],\
x['Yaw_Init'],\
x['Roll_Init'], 'rxyz'), axis=1))
我得到错误:传递值的形状是 (362, 4),索引暗示 (362, 6)。
如果我更改它返回一个值的函数 computeQuat,它可以正常工作:
def computeQuat(p,y,r,syscoord):
return transforms3d.euler.euler2quat(p, y, r, syscoord)[0]
但我想将整个四元数作为 numpy.ndarray 存储在一列中。感谢您的帮助。
我使用 python 2。
我的数据框中的一些行:
Pitch_Init Yaw_Init Roll_Init X Y Z
0 0.00000 0.000000 0.000000 0.00000 0.00000 0.0000
1 -3.02664 -0.196047 0.027153 1.15756 -3.73556 60.8734
2 -3.04845 -0.180832 0.024738 1.16244 -3.75089 60.9885
3 -3.06983 -0.168351 0.022593 1.16580 -3.76106 61.0987
4 -3.12110 -0.135368 0.021681 1.18352 -3.78380 61.4627
5 3.11304 -0.130364 0.019365 1.17835 -3.77255 61.5189
6 3.09046 -0.137977 0.017496 1.17643 -3.76929 61.4626
7 3.08333 -0.132229 0.017267 1.17355 -3.76809 61.4604
8 3.07844 -0.141410 0.017119 1.17351 -3.76710 61.4747
9 3.09239 -0.106203 0.018702 1.19171 -3.77195 61.5361
10 3.08501 -0.125604 0.017750 1.19317 -3.76052 61.4881
【问题讨论】: