[SciPy-User] matrix of vectors

Neil Martinsen-Burrell nmb@wartburg....
Tue Dec 1 10:53:54 CST 2009

On 2009-12-01 09:35 , Marco wrote:
> Hi all,
> I'd need to build a matrix (NxN) in which each element is a vector
> with 3 components.

One possible way to do this is to use a rich datatype like

 >>> N = 64
 >>> a = np.zeros((N,N), dtype=np.dtype("(3,)f8")
 >>> a[0,0]
array([ 0.,  0.,  0.])

which defines an NxN array whose elements are length 3 vectors of 
floats.  You can also just think of this as an NxNx3 array of floats 
where numpy's indexing rules let you index just the first two dimensions:

In[8]: a = np.zeros((N,N,3))

In [9]: a[1,1]
Out[9]: array([ 0.,  0.,  0.])

You should note that if you want to multiply these vectors by other 
matrices (such as rotations, etc.) then it is possible (but tricky) to 
use np.dot to do so.


More information about the SciPy-User mailing list