[Numpy-discussion] Matrices and arrays of vectors
Bob Dowling
rjd4+numpy@cam.ac...
Fri Feb 24 06:11:39 CST 2012
Conceptually, I have a 2-d grid of 2-d vectors. I am representing this
as an ndarray of shape (2,M,N). I want to apply a 2x2 matrix
individually to each vector in the grid.
However, I can't work out the appropriate syntax for getting the matrix
multiplication to broadcast over the grid. All attempts at
multiplication seem to want to cast the 3-d array into a matricx with
the inevitable error message "ValueError: shape too large to be a matrix."
Does such a method exist?
This is a dummy script to show the sort of thing I'm trying to do:
import math
import numpy
import numpy.random
# Rotation angle
theta = math.pi/6.0
# Grid shape
M = 10
N = 10
# Establish the rotation matrix
c = math.cos(theta)
s = math.sin(theta)
rotation = numpy.matrix([[c, s], [-1.0*s, c]])
# Fudge some data to work with
data = numpy.random.uniform(-1.0, 1.0, 2*M*N).reshape(2,M,N)
# THIS DOES NOT WORK.
# BUT WHAT DOES?
rotated_data = rotation*data
More information about the NumPy-Discussion
mailing list