レッスン2 / 2問目

『指数と対数』

このレッスンではNumPyで指数と対数を扱う方法にについて学習していきましょう。

NumPyにおける指数、対数の関数はnp.exp()とnp.log()となります。

関数説明
np.exp指数
np.log対数

これらについて以下の内容を見ていきます。

  1. 指数とは
  2. 対数とは
  3. ネイピア数
  4. np.exp()
  5. np.log()

では順番に見ていきましょう。

指数とは

指数とはべき乗表記における添え字を指します。例えば「x²」であれば指数は2です。「y³」であれば指数は3となります。
そしてこれらにおけるxとyをと呼びます。

対数とは

では次は対数について見ていきましょう。以下の数式におけるxの部分が対数にあたります。

例題1  2x=4 例題2  2x=8 例題3  2x=16

例題1における対数は2、例題2は3、例題3は4となります。

では次は以下の数式の対数を考えてみてください。

例題4  2x=5

この例題に関しては前例題のように対数を求めることはできません。そのためここでlogという関数が登場します。この対数関数logを使うことで例題4の対数を表現することができます。以下が例題4の対数を表す対数関数です。

log 2 5

この対数関数における2を底(てい)と呼び、5を真数と呼びます。そして上記のlogを用いた式を「2を底とした5の対数」といいます。

では練習問題です。以下の対数を求めてください。

練習問題   2x=15

以下が答えです。

log 2 10

ネイピア数とは

このレッスンの主題であるnp.exp()とnp.log()はネイピア数を底とする関数であるためここではそのネイピア数について見ていきます。

ネイピア数とは数学における定数の一つであり、eの記号で表されます。

具体的な数値としては「2.718.......」というように無限に続く無理数です。NumPyでは「np.e」と記述するとネイピア数となります。試しにエディタで「print(np.e) 」を 出力してみてください。すると、ネイピア数を確認することができます。

ネイピア数は円周率などと同じように小数が無限に続きますので、だいたい2.7ぐらいの数値であるということを覚えておきましょう。ちなみにこのネイピア数という名称は数学者のジョン・ネイピアという人物が由来しています。

また、ネイピア数には微分しても値が変わらないという特徴があり、そのため様々な計算にネイピア数が活用されます。np.exp()、np.log()においてもこのネイピア数を底とします。

np.exp

ではnp.expについて見ていきましょう。np.expはネイピア数を底とする指数関数です。np.expの引数には指数を指定します。

  1. print(np.exp(1))
2.7182818284590455    # ネイピア数の1乗

ネイピア数の1乗が出力されました。

続いて指数を2に指定した場合の例です。

  1. print(np.exp(2))
7.38905609893065    # ネイピア数の2乗

ネイピア数の2乗が出力されました。

では次はndarrayに対してnp.expを使用する例を見ていきましょう。以下のようにnp.exp()の引数に配列を指定します。

  1. arr = np.array([1, 2, 3])
  2. arr2 = np.exp(arr)
  3. print(arr2)
[ 2.71828183 7.3890561 20.08553692]    # 指数関数

np.log

続いて対数関数np.log()を見ていきましょう。np.log()はネイピア数を底とする対数関数です。以下のようにnp.log()の引数に真数を指定します。

  1. print(np.log(np.e))    # ネイピア数を底とするネイピア数の対数
  2. print(np.log(2))    # ネイピア数を底とする2の対数
  3. print(np.log(3))    # ネイピア数を底とする3の対数
1.0 0.6931471805599453 1.0986122886681096

1行目がネイピア数を底とするネイピア数の対数、2行目がネイピア数を底とする2の対数、3行目がネイピア数を底とする3の対数となります。

また、np.log()も配列を引数に渡すことができます。

  1. arr = np.array([np.e, 2, 3])
  2. arr2 = np.log(arr)    # 配列を指定
  3. print(arr2)
[1. 0.69314718 1.09861229]

配列arrの対数が出力されました。

その他の対数関数

np.log()はネイピア数を底とする対数関数でしたが、NumPyでは他にも2を底とする対数関数、10を底とする対数関数、底をネイピア数とする真数+1の対数関数があります。

関数説明
np.log2(x)2を底とする対数関数
np.log10(x)10を底とする対数関数
np.log1p(x)ネイピア数を底とするx+1の対数

NumPyではこれらの対数関数も用意されているということを覚えておきましょう。

では練習問題にチャレンジしましょう。

Lesson1

配列arr1を指数とする指数関数を出力してください。

Lesson2

np.log()を用いて配列arr1の対数を出力してください。

Last updated:2019/12/18

[ 7.3890561  20.08553692 54.59815003]
[0.69314718 1.09861229 1.38629436]
  1. import numpy as np

  2. arr1 = np.array([2, 3, 4])

  3. # 配列arr1の指数関数を出力してください。

  4. arr2 = np.exp(arr1)
  5. print(arr2)

  6. # 配列arr1の対数を出力してください。

  7. arr3 = np.log(arr1)
  8. print(arr3)
main.py
設定
g
n
i
d
a
o
L