2016-03-25 19 views
3

文字列に基づいてnumpy関数を適用できますか? 私は 'max'を呼ぶとnp.maxを呼び出します。これは読みやすくを与え、自分のコードが短くなります文字列に基づいてnumpy関数を適用する

some_cool_function(aggregator, values, axis=0) 
>>> [2 3 6] 

:私はこのようなものであると思います何

values = np.array([[1,2,-1],[2,3,6], [0,-1,4]]) 
aggregator = 'max' 
print np.max(values, axis=0) 
>>> [2 3 6] 

。 ifを複数回実行する代わりに。

EDIT

私はnumpy.apply_along_axisを見つけたが、それは関数が、それは文字列にすることはできません期待しています。

+0

'some_cool_function'に** multiple if **をラップするのはどうですか?それのどこが悪いんだい? –

+1

何か新しいことを学んで、車輪を再構築しないかもしれません。 – dooms

答えて

4

私はあなたがgetattrを探していると思う:

>>> getattr(np, 'max')(values, axis=0) 
array([2, 3, 6]) 
0

あなたがnp.apply_along_axis()を試すことができます。例:

>>> np.apply_along_axis(np.max, 0, values) 
array([2, 3, 6]) 

>>> np.apply_along_axis(np.min, 1, values) 
array([-1, 2, -1]) 

はEDIT:あなた本当にが文字列を使用したい場合は
、あなただけの関数にあなたの文字列をマッピングする辞書を作る(例えば{'max':np.max, 'min':np.min})と、2つのラインsuper_cool_functionで全体を包むことができます。

関連する問題