numpyの関数列同時実行
あのさあ、
セブンのたらこパスタ、なんでバターじゃなくなったん?
久々に買ってみたら、あれ、
たらこパスタにバターがのってなくて、
商品名もたらこマヨパスタになっていた
マヨはマヨでうまいけど、
たらこといえばバターだろうがっ!
本題
numpyをよくつかっている
numpyといえば、行列演算なんだが、
それを利用した小ワザを思いついた
a = numpy.array([1,2]) b = numpy.array([3,4]) c = a + b # c: [ 4, 6 ]
通常足し算をするときはこんな感じで同じ位置同士を演算する
d = numpy.sin(a)
# d: [0.84147098, 0.90929743]
関数に投げれば、要素に対して関数を実行する
じゃあ、異なる関数を集めた行列で同じ位置の要素に関数を実行するには?
そういう関数があるのかもしれないけど、
わからないし、調べてもでなかったので、別の方法で解決する
class func(): def __init__(self, a=None): self.f = a def __add__(self, a): return self.f(a) def setfunc(self, a): self.f = a a = numpy.array([func(f1), func(f2)], dtype='object') b = numpy.array([1,2]) c = a + b
無理矢理になるけど、こうするしかないよなあ
クラスの演算命令に設定をするだけ
これ、関数オブジェクトに登録できないのか?って思ってやってみたが、
どうもうまくいかなかった
大量の関数を用意して、順列処理する必要のない演算はこれで同時実行すれば早いはず