Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create random orthonormal matrix in python numpy

Is there a method that I can call to create a random orthonormal matrix in python? Possibly using numpy? Or is there a way to create a orthonormal matrix using multiple numpy methods? Thanks.

like image 756
Dacion Avatar asked Jul 17 '16 22:07

Dacion


1 Answers

Version 0.18 of scipy has scipy.stats.ortho_group and scipy.stats.special_ortho_group. The pull request where it was added is https://github.com/scipy/scipy/pull/5622

For example,

In [24]: from scipy.stats import ortho_group  # Requires version 0.18 of scipy  In [25]: m = ortho_group.rvs(dim=3)  In [26]: m Out[26]:  array([[-0.23939017,  0.58743526, -0.77305379],        [ 0.81921268, -0.30515101, -0.48556508],        [-0.52113619, -0.74953498, -0.40818426]])  In [27]: np.set_printoptions(suppress=True)  In [28]: m.dot(m.T) Out[28]:  array([[ 1.,  0., -0.],        [ 0.,  1.,  0.],        [-0.,  0.,  1.]]) 
like image 146
Warren Weckesser Avatar answered Oct 12 '22 21:10

Warren Weckesser