関数計算をPythonで行う場合、mathモジュールをインポートして実行する場合とNumpyモジュールをインポートして実行する場合があります。
関数計算とは、三角関数(sin,cos)や指数関数、対数関数のことを指します。
その2つの方法と違いを紹介します。
math moduleの場合
import math
print(math.sin(math.radians(30))) #0.49999999999999994
print(math.cos(math.pi/4)) #0.7071067811865476
print(math.exp) #2.718281828459045
mathモジュールをインポートして、sin30°とcos(π/4)とネイピア数を計算しています。
Numpy moduleの場合
import numpy as np
print(np.sin(np.radians(30))) #0.49999999999999994
print(np.cos(np.pi/4)) #0.7071067811865476
print(np.exp) #2.718281828459045
numpyモジュールをインポートして、 sin30°とcos(π/4)とネイピア数を計算しています。
両者の違い
どちらのモジュールも関数計算ができます。
では、両者の違いは何でしょうか。
標準ライブラリか否か
mathモジュールは、標準ライブラリであるため、インストールすることなくインポートして利用することができます。
対して、numpyモジュールは、標準ライブラリではないため、インストールする必要があります。
pip install numpy
対象の値
mathモジュールは、1つの数字のみに対して関数計算をします。したがって、配列などは利用できません。
numpyモジュールは、配列(Numpy配列、リスト、pandas.Series)でも実行できます。
import math
import numpy as np
data=[10,20,30]
print(np.sin(np.radians(data))) #array([0.17364818, 0.34202014, 0.5 ])
print(math.sin(math.radians(data)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be real number, not list
ここが大きな違いで、以前、pandasのSeriesにmathを使って
TypeError: cannot convert the series to <type 'float'>
このようなエラーメッセージがでて、調べたことで知りました。