スカラーだと math モジュールが早いです。
python
1import math
2import timeit
3
4import numpy as np
5import sympy
6
7loop = 100000
8
9print(timeit.timeit('math.log(121.)', globals=globals(), number=loop))
10print(timeit.timeit('np.log(121.)', globals=globals(), number=loop))
11print(timeit.timeit('sympy.log(121.)', globals=globals(), number=loop))
12#0.011325610801577568
13#0.06457840511575341
14#0.03548670373857021
ある程度の規模の配列だと、numpy のほうが圧倒的に早いです。
log 以外のあらゆる演算で同じ結果になると思います。
python
1array = np.random.randint(1, 10, 100).astype(float)
2
3loop = 100000
4
5print(timeit.timeit('[math.log(x) for x in array]', globals=globals(), number=loop))
6print(timeit.timeit('np.log(array)', globals=globals(), number=loop))
71.721153515856713
80.19541964400559664
sympy は数値計算ライブラリというよりは記号計算を行うライブラリという印象です。
なので数値計算を行う際の使い分けとしては
スカラーの計算: math モジュール
配列の計算: numpy
となると思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/22 06:13