5

Numpy Array に Piecewise 関数を適用する効率的な (速度の) 方法は何ですか?

たとえば、ピースワイズ関数は次のようになります

For (1) :  x<=2 f(x) = 2*x + x^2
    (2) :  x>2  f(x) = -(x^2 + 2)

これが私がしたことです。

data = np.random.random_integers(5, size=(5,6))
print data
np.piecewise(data, [data <= 2, data > 2],
             [lambda x: 2*x + pow(2, x),
              lambda x: -(pow(x, 2) + 2)])

data = 
[[4 2 1 1 5 3]
 [4 3 3 5 4 5]
 [3 2 4 2 5 3]
 [2 5 4 3 1 4]
 [5 3 3 5 5 5]]
output = 
array([[-18,   8,   4,   4, -27, -11],
       [-18, -11, -11, -27, -18, -27],
       [-11,   8, -18,   8, -27, -11],
       [  8, -27, -18, -11,   4, -18],
       [-27, -11, -11, -27, -27, -27]])

小さい配列、大きい配列、多くの関数などを処理する効率的な方法はありますか? 私の懸念は、ラムダ関数が使用されていることです。これらが Numpy に最適化されているかどうかはわかりません。

4

1 に答える 1