2

関数があるとします:

 def mean(data):
     return sum(data)/len(data)

システムに numpy がある場合は、次のように定義することをお勧めします。

def man(data):
     return np.mean(data)

高度なライブラリをnumexprとして持っている場合は、次のようにすることをお勧めします。

def mean(data):
     return ne.evaluate("sum(data)") / len(data)

今... 1つのライブラリが利用可能かどうかに応じて、以前のいずれかを使用したい. Pythonで行うより良い方法は何ですか? たとえば、c/c++ では次のようなマクロを使用します。

#ifdef HAS_NUMPY
...
#elseif HAS_NUMEXPRE
...
4

1 に答える 1

4
try:
   import numpy as np
   HAS_NUMPY = True
except ImportError:
   HAS_NUMPY = False

try:
   import numexpr as ne
   HAS_NUMEXPR = True
except ImportError:
   HAS_NUMEXPR = False


if HAS_NUMPY:
    mean = np.mean
elif HAS_NUMEXPR:
    def mean(data):
        return ne.evaluate("sum(data)") / len(data)
else:
    def mean(data):
        return sum(data)/len(data)
于 2013-02-28T23:27:02.643 に答える