NumPy:【median,radians,sin,cos,tan,e,log,exp】実行例


サマリ

  • np.mean
    • 平均
  • np.median
    • 中央値
  • np.radians
    • ラジアン
  • np.sin、np.cos、np.tan
    • 三角関数
  • np.e
    • 自然対数の底
    • ネイピア数
  • np.log
    • 対数
  • np.exp
    • エクスポネンシャル

前提

  • 特になし

サンプルコード

np.mean、np.median(中央値)

import numpy as np
a = np.array([80,78,91,84,76,68,89,85,91,83])
print(np.mean(a))
print(np.median(a))
82.5
83.5
  • np.mean
    • 平均値
    • このデータでは82.5になった
  • np.median
    • 中央値
    • このデータでは83.5になった

np.radians、三角関数

角度からラジアンに変換

import numpy as np
r_30 = np.radians(30)
r_45 = np.radians(45)
r_60 = np.radians(60)
r_90 = np.radians(90)
print(r_30)
print(r_45)
print(r_60)
print(r_90)
0.5235987755982988
0.7853981633974483
1.0471975511965976
1.5707963267948966
  • 30度
    • 0.5235987755982988
  • 45度
    • 0.7853981633974483
  • 60度
    • 1.0471975511965976
  • 90度
    • 1.5707963267948966

角度からラジアンに変換

a = np.sin(r_30)
b = np.cos(r_60)
c = np.tan(r_45)
print(f'sin:{a}')
print(f'cos:{b}')
print(f'tan:{c}')
sin:0.49999999999999994
cos:0.5000000000000001
tan:0.9999999999999999
  • sin(30度)
    • ≒0.5
  • cos(60度)
    • ≒0.5
  • tan(45度)
    • ≒1
  • 有効桁数があるので、ちょうどいい数字にはならない
    • 必要あれば切り上げ、切り下げで処理
    • しかし、軽量化など敢えて精度を下げる場合の除いて、そのように処理することはない

np.exp

import numpy as np
e = np.e
eee = np.e*np.e*np.e
e_3 = np.exp(3)
print(e)
print(eee)
print(e_3)
2.718281828459045
20.085536923187664
20.085536923187668
  • e
    • 自然対数の底
    • 2.71…が確認できる
  • eee
    • eを3回かけた結果
    • np.expの結果と比較するために計算
    • 20.08…が確認できる
  • e_3
    • np.exp(…)の引数を3にするとeを3回かけた結果と同様になる
    • 20.08…が確認できる
      • eeeの結果とほぼ一致する
        ※同じとみなせる(有効桁数の差)

np.log

a = np.log(e)
b = np.log(0)
c = np.log(1)
print(a)
print(b)
print(c)
1.0
-inf
0.0
  • a,b,cいずれも数学の計算値と一致する
    • 「-inf」はマイナス無限大
  • 参考
    • logはAI勉強していると数式によく登場する
      • AI学習時の損失計算に負の対数尤度
      • 情報理論、確率統計
      • GANの理論式
      • 強化学習の理論(方策勾配定理)
    • AIを勉強するために避けては通れない
    • logをもう少し親しみやすいものにするための記事


Posted by futa