2017-03-06 3 views
0

スパース行列の要素的な絶対値はどのようにして得ることができますか?一般に、ユーザー定義関数を使用して行列を別の行列にマップすることは可能ですか?私にとってスパース行列の要素的な絶対値

+0

実際に 'np.absolute(spmat)'を試しましたか? –

+0

あなたは非常に具体的なものと非常に一般的なものの2つの質問をしました。 2番目のものへの答えはおそらく、ユーザー定義関数がどのように一般的であるかに依存しています。あなたがしたいことのいくつかの例を挙げることができますか? –

+0

@WarrenWeckesser Paul Panzerは、両方の答えを提供します。私のユーザ定義関数は0を0にマップします。 –

答えて

1

以下単にscipyのダウンロードで

import numpy as np 
from scipy import sparse 

a = sparse.identity(5).tocsr() * 1j 
a[2,4] = 1-1j 
b = np.absolute(a) 
b.A 
# array([[ 1.  , 0.  , 0.  , 0.  , 0.  ], 
#  [ 0.  , 1.  , 0.  , 0.  , 0.  ], 
#  [ 0.  , 0.  , 1.  , 0.  , 1.41421356], 
#  [ 0.  , 0.  , 0.  , 1.  , 0.  ], 
#  [ 0.  , 0.  , 0.  , 0.  , 1.  ]]) 

# general functions: use the data attribute to access nonzeros 

b.data = np.exp(b.data) 
b.A 
# array([[ 2.71828183, 0.  , 0.  , 0.  , 0.  ], 
#  [ 0.  , 2.71828183, 0.  , 0.  , 0.  ], 
#  [ 0.  , 0.  , 2.71828183, 0.  , 4.11325038], 
#  [ 0.  , 0.  , 0.  , 2.71828183, 0.  ], 
#  [ 0.  , 0.  , 0.  , 0.  , 2.71828183]]) 
+0

'sparse'に0値をそのまま残す' ufunc'のバージョンがあることを発見しただけではありませんか?自身のコピーを返しますが、 '.data'値のすべてに' ufunc'が適用されます。 – hpaulj

+0

@hpauljはい、そうでした。 'data'手書きは、0をそのまま残さない関数のためのものです。それとも、私が他のすべての「ufuncs」についてもっと教訓的にすべきだったと言っていますか?そこにポイントがあるかもしれません。完璧に正直に言うと、私は素早いチェックを行い、絶対的なメンバーを見つけられず、もちろん、__abs__を完全に忘れてしまった。あなたが好きなら、私は省略したものをカバーするポストを作ることができます。 –

+0

http://stackoverflow.com/questions/42408772/element-wise-exp-of-scipy-sparse-matrix - 疎な 'expm1'メソッドを発見するために。 – hpaulj

1

疎行列オブジェクトはメソッド__abs__()を実装し動作します。つまり、Pythonのビルトインabs()関数を使用することができます。それは__abs__()メソッドへの呼び出しをディスパッチします。たとえば、

In [16]: from scipy.sparse import csr_matrix 

In [17]: a = csr_matrix([[1+1j, 0, 0, 0], [0, -2, 0, 0], [0, 0, 0, 0], [3-4j, 0, -5j, 0]]) 

In [18]: a.A 
Out[18]: 
array([[ 1.+1.j, 0.+0.j, 0.+0.j, 0.+0.j], 
     [ 0.+0.j, -2.+0.j, 0.+0.j, 0.+0.j], 
     [ 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j], 
     [ 3.-4.j, 0.+0.j, 0.-5.j, 0.+0.j]]) 

In [19]: b = abs(a) 

In [20]: b.A 
Out[20]: 
array([[ 1.41421356, 0.  , 0.  , 0.  ], 
     [ 0.  , 2.  , 0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 0.  ], 
     [ 5.  , 0.  , 5.  , 0.  ]]) 
関連する問題