Ok, just for record this is the expected behavior of the printoptions function we are using:

```
In [1]: import numpy as np

In [2]: m = np.random.ra
np.random.rand             np.random.randn            np.random.random_integers  np.random.ranf             
np.random.randint          np.random.random           np.random.random_sample    np.random.rayleigh         

In [2]: m = np.random.ran
np.random.rand             np.random.randn            np.random.random_integers  np.random.ranf             
np.random.randint          np.random.random           np.random.random_sample    

In [2]: m = np.random.rand
np.random.rand             np.random.randn            np.random.random_integers  
np.random.randint          np.random.random           np.random.random_sample    

In [2]: m = np.random.rando
np.random.random           np.random.random_integers  np.random.random_sample    

In [2]: m = np.asmatrix(np.random.random((3, 1)))

In [3]: m
Out[3]: 
matrix([[ 0.09109264],
        [ 0.04411205],
        [ 0.99016643]])

In [4]: for i in range(1, 10):
    np.set_printoptions(precision=i, suppress=True)
    print(m)
   ...:     
[[ 0.1]
 [ 0. ]
 [ 1. ]]
[[ 0.09]
 [ 0.04]
 [ 0.99]]
[[ 0.091]
 [ 0.044]
 [ 0.99 ]]
[[ 0.0911]
 [ 0.0441]
 [ 0.9902]]
[[ 0.09109]
 [ 0.04411]
 [ 0.99017]]
[[ 0.091093]
 [ 0.044112]
 [ 0.990166]]
[[ 0.0910926]
 [ 0.0441121]
 [ 0.9901664]]
[[ 0.09109264]
 [ 0.04411205]
 [ 0.99016643]]
[[ 0.091092638]
 [ 0.044112054]
 [ 0.990166429]]

In [5]: m = np.asmatrix(np.zeros((3, 1)))

In [6]: m
Out[6]: 
matrix([[ 0.],
        [ 0.],
        [ 0.]])

In [7]: for i in range(1, 10):
    np.set_printoptions(precision=i, suppress=True)
    print(m)
   ...:     
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]

In [8]: %paste
import contextlib

@contextlib.contextmanager
def printoptions(*args, **kwargs):
    original = np.get_printoptions()
    np.set_printoptions(*args, **kwargs)
    yield 
    np.set_printoptions(**original)

## -- End pasted text --

In [9]: for i in range(1, 10):
    np.set_printoptions(precision=i, suppress=True)
    print(m)
   ...:     
KeyboardInterrupt

In [9]: for i in range(1, 10):
   ...:     with printoptions(precision=i, suppress=True):
   ...:         print(m)
   ...:         
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]

In [10]: %paste
import numpy.core.arrayprint as arrayprint
import contextlib

@contextlib.contextmanager
def printoptions(strip_zeros=True, **kwargs):
    origcall = arrayprint.FloatFormat.__call__
    def __call__(self, x, strip_zeros=strip_zeros):
        return origcall.__call__(self, x, strip_zeros)
    arrayprint.FloatFormat.__call__ = __call__
    original = np.get_printoptions()
    np.set_printoptions(**kwargs)
    yield 
    np.set_printoptions(**original)
    arrayprint.FloatFormat.__call__ = origcall

## -- End pasted text --

In [11]: for i in range(1, 10):
    with printoptions(precision=i, suppress=True):
        print(m)
   ....:         
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]

In [12]: m = np.asmatrix(np.random.random((3, 1)))

In [13]: for i in range(1, 10):
    with printoptions(precision=i, suppress=True):
        print(m)
   ....:         
[[ 0.7]
 [ 1. ]
 [ 0.9]]
[[ 0.67]
 [ 0.95]
 [ 0.94]]
[[ 0.671]
 [ 0.955]
 [ 0.937]]
[[ 0.671 ]
 [ 0.9549]
 [ 0.9373]]
[[ 0.67099]
 [ 0.95486]
 [ 0.93734]]
[[ 0.670989]
 [ 0.95486 ]
 [ 0.937343]]
[[ 0.6709894]
 [ 0.9548605]
 [ 0.9373427]]
[[ 0.67098936]
 [ 0.95486049]
 [ 0.93734275]]
[[ 0.670989358]
 [ 0.95486049 ]
 [ 0.937342745]]

In [14]: for i in range(1, 10):
    with printoptions(strip_zeros=False, precision=i, suppress=True):
        print(m)
   ....:         
[[ 0.7]
 [ 1.0]
 [ 0.9]]
[[ 0.67]
 [ 0.95]
 [ 0.94]]
[[ 0.671]
 [ 0.955]
 [ 0.937]]
[[ 0.6710]
 [ 0.9549]
 [ 0.9373]]
[[ 0.67099]
 [ 0.95486]
 [ 0.93734]]
[[ 0.670989]
 [ 0.954860]
 [ 0.937343]]
[[ 0.6709894]
 [ 0.9548605]
 [ 0.9373427]]
[[ 0.67098936]
 [ 0.95486049]
 [ 0.93734275]]
[[ 0.670989358]
 [ 0.954860490]
 [ 0.937342745]]

In [15]: m = np.asmatrix(np.zeros((3, 1)))

In [16]: for i in range(1, 10):
    with printoptions(strip_zeros=False, precision=i, suppress=True):
        print(m)
   ....:         
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
[[ 0.]
 [ 0.]
 [ 0.]]
```