scipy.sparse
行列を要素単位で累乗するにはどうすればよいですか? numpy.power
は、its manualによると、これを行う必要がありますが、それはスパース行列に失敗:scipy.sparse行列の要素単位の電力
>>> X
<1353x32100 sparse matrix of type '<type 'numpy.float64'>'
with 144875 stored elements in Compressed Sparse Row format>
>>> np.power(X, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../scipy/sparse/base.py", line 347, in __pow__
raise TypeError('matrix is not square')
TypeError: matrix is not square
同じ問題をX**2
と。高密度配列への変換は機能しますが、貴重な秒を無駄にします。
np.multiply
と同じ問題がありましたが、これは疎行列のmultiply
メソッドを使用して解決しましたが、pow
メソッドがないようです。
私は答えが分かりませんが、あなたのコードはドキュメントと矛盾していません。 numpy.powerの第2引数は数値ではなく、別の行列であるべきです。 – RoundTower
オブジェクトの '__pow__'メソッドが呼び出されているようですが、これは要素全体を処理するのではなく、行列全体を二乗しようとしています。それは、行列が正方形ではないという理由で失敗します。 –
@RoundTower:実際には、2番目の要素は配列でなければなりません.Numpyの行列と同じではありませんが、スカラーは '(1、)'または '(1,1)'配列と同じです。密集した配列上の 'numpy.power'の目的です。 –