2012-08-27 15 views
13

Ho un elenco di punti 3D memorizzati nell'array numpy A con forma (N,3) e una matrice di rotazione R con forma (3,3). Mi piacerebbe calcolare il prodotto punto di R.x per ogni punto x in A sul posto. Ingenuamente posso farlo:Ruotare in modo efficiente un set di punti con una matrice di rotazione numpy

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

C'è un modo per vectorize con una chiamata numpy nativa? Se è importante, N è dell'ordine di un paio di migliaia.

risposta

19

È possibile moltiplicare A con la trasposta della matrice di rotazione:

A = dot(A, R.T) 
Problemi correlati