くだらないものばかり作ってないでたまには技術ネタを書いてみようと思う。 Python(とくにscipy.sparse)でx=0でf(x)=0となるようなユニバーサル関数fを疎行列のそれぞれの要素に作用させるにはどうすればいいだろうか。 x=0で0になるという点が重要で、その条件を満たす関数ならばもとの行列のsparsityをそのまま保存できる。つまり結果も疎行列になるはずだ。 Pythonにはユニバーサル関数という呼ばれる関数群があって、それは密行列については便利な機能で、例えば、密行列のすべての要素にtanhを作用させようとすると、次のようなコードで計算できる。 import numpy as np a=np.ones((3,3)) print a b=np.tanh(a) print b つまりユニバーサル関数は行列に作用させると各要素に作用する。以前に書いたfor文を書いたら負けとい