2012-08-27 23 views
13

Tengo una lista de puntos 3D almacenados en numpy array A con forma (N,3) y una matriz de rotación R con forma (3,3). Me gustaría calcular el producto escalar de R.x para cada punto x en A in situ. Ingenuamente puedo hacer esto:Rotar eficientemente un conjunto de puntos con una matriz de rotación en numpy

for n in xrange(N): 
    A[n,:] = dot(R, A[n,:]) 

¿Hay alguna manera de vectorizar esto con una llamada numpy nativa? Si es importante, N está en orden de un par de miles.

Respuesta

19

Puede multiplicar A con la transpuesta de la matriz de rotación:

A = dot(A, R.T) 
Cuestiones relacionadas