如何生成一个迭代张量,迭代不同的向量值?例如,如果我想要以下公式:
[0,pi/2]
所有这些都被[[1,0,0],
[. . .],
[0,0,1]]
的范围所取代,结果是一个矩阵如下:
{{1}}
最简单的方法是什么?
答案 0 :(得分:2)
玩形状和三角学:
a=linspace(0,pi/2,10).reshape(-1,1)
rotmats=sin(hstack((a+pi/2,0*a,a)))
答案 1 :(得分:1)
theta = numpy.arange(0, numpy.pi/2, 0.01) # You can control the step, of course
result = numpy.array([numpy.cos(theta),
numpy.zeros(len(theta)),
numpy.sin(theta)]
).T
答案 2 :(得分:0)
滥用trigonometry
和broadcasting
,这是一个有趣的单行 -
>>> np.sqrt(np.abs(np.cos(np.linspace(0,np.pi/2,10))[:,None]**[2,0,2]+[0,-1,-1]))
array([[ 1. , 0. , 0. ],
[ 0.9848, 0. , 0.1736],
[ 0.9397, 0. , 0.342 ],
[ 0.866 , 0. , 0.5 ],
[ 0.766 , 0. , 0.6428],
[ 0.6428, 0. , 0.766 ],
[ 0.5 , 0. , 0.866 ],
[ 0.342 , 0. , 0.9397],
[ 0.1736, 0. , 0.9848],
[ 0. , 0. , 1. ]])