Scipyで、非零の要素が−1.0から1.0の一様分布で、ランダムなスパース行列を生成したい


Scipyで、非零の要素が−1.0から1.0の一様分布で、  
ランダムなスパース行列を生成したいです。

単純に、Scipyのrandを用いて

[code]

    scipy.sparse.rand(m, n)
    
[/code]

と書くと、要素は0.0から1.0の一様分布なので、  
非零の値がすべて正になってしまいます。

ランダムなスパース行列の生成の際に、  
非零要素値の上限下限を変える  
効率の良い方法はあるでしょうか？

よろしくお願いします。




−1.0 から 1.0 の一様分布との事ですので、以下ではどうでしょうか。`[0, 1]` なので、`ceil()` が 1.0
になることを利用しています。

[code]

    >>> import scipy.sparse as sp
    >>> r = sp.rand(100, 100)
    >>> r2 = r * 2.0 - r.ceil()
    >>> print r2
    (0, 18)  0.105084065469
    (0, 96)  -0.667551576265
    (3, 60)  0.239045542473
    (5, 38)  -0.420674130882
    (5, 87)  0.146186464011
    (6, 20)  -0.394829441002
                   :
    
[/code]

