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

無理矢理になるけど、こうするしかないよなあ
クラスの演算命令に設定をするだけ

これ、関数オブジェクトに登録できないのか?って思ってやってみたが、
どうもうまくいかなかった

大量の関数を用意して、順列処理する必要のない演算はこれで同時実行すれば早いはず