基于numpy中的向量生成张量的元素

时间:2017-01-03 18:44:27

标签: python numpy

如何生成一个迭代张量,迭代不同的向量值?例如,如果我想要以下公式:

[0,pi/2]

所有这些都被[[1,0,0], [. . .], [0,0,1]] 的范围所取代,结果是一个矩阵如下:

{{1}}

最简单的方法是什么?

3 个答案:

答案 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)

滥用trigonometrybroadcasting,这是一个有趣的单行 -

>>> 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.    ]])