Numpy個人的tips

numpyもデータ分析や数値計算には欠かせないツールの一つです。機械学習などを実装していると必ず必要とされるライブラリです。個人的な備忘録としてメモを残しておきます。詳細は以下の公式ページを参照してください。

目次

github

  • githubのjupyter notebook形式のファイルはこちら

筆者の環境

筆者の環境とimportの方法は以下の通りです。

!sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G2022
!python -V
Python 3.5.5 :: Anaconda, Inc.
%matplotlib inline
%config InlineBackend.figure_format = 'svg'

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

print(np.__version__)
print(matplotlib.__version__)
1.18.1
2.2.2

三角関数

np.sin(x)

$\sin x$です。

print(np.sin(0))
print(np.sin(np.pi / 2))
print(np.sin(np.pi))
0.0
1.0
1.2246467991473532e-16
x = np.linspace(-2 * np.pi, 2 * np.pi, 100)
y = np.sin(x)

plt.grid()
plt.title('$y = \sin x$', fontsize=16)
plt.ylabel('$\sin x$')
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x114397588>]

np.cos(x)

$\cos x$です。

print(np.cos(0))
print(np.cos(np.pi / 2))
print(np.cos(np.pi))
1.0
6.123233995736766e-17
-1.0
x = np.linspace(-2 * np.pi, 2 * np.pi, 100)
y = np.cos(x)

plt.grid()
plt.title('$y = \cos x$', fontsize=16)
plt.ylabel('$\cos x$')
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x1144e8fd0>]

np.tan(x)

$\tan x$です。

print(np.tan(0))
print(np.tan(np.pi / 4))
print(np.tan(np.pi))
0.0
0.9999999999999999
-1.2246467991473532e-16
x = np.linspace(-2 * np.pi, 2 * np.pi, 100)
y = np.tan(x)

plt.grid()
plt.title('$y = \\tan x$', fontsize=16)
plt.ylabel('$\tan x$')
plt.ylim(-5,5)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x1145def98>]

np.arcsin(x)

$\sin x$の逆関数です。

print(np.arcsin(0))
print(np.arcsin(1))
print(np.arcsin(-1))
0.0
1.5707963267948966
-1.5707963267948966
x = np.linspace(-1, 1, 100)
y = np.arcsin(x)

plt.grid()
plt.title('$y = \\arcsin x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e48cef0>]

np.arccos(x)

$\cos x$の逆関数です。

print(np.arccos(0))
print(np.arccos(1))
print(np.arccos(-1))
1.5707963267948966
0.0
3.141592653589793
x = np.linspace(-1, 1, 100)
y = np.arccos(x)

plt.grid()
plt.title('$y = \\arccos x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e4a4b00>]

np.arctan(x)

$\tan x$の逆関数です。

print(np.arctan(0))
print(np.arctan(1))
print(np.arctan(-1))
0.0
0.7853981633974483
-0.7853981633974483
x = np.linspace(-np.pi, np.pi, 100)
y = np.arctan(x)

plt.grid()
plt.title('$y = \\arctan x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e55ee10>]

np.sinh(x)

双曲線正弦関数です。

$ \displaystyle \sinh x = \frac{e^x - e^{-x}}{2} $
print(np.sinh(0))
print(np.sinh(-1))
print(np.sinh(1))
0.0
-1.1752011936438014
1.1752011936438014
x = np.linspace(-np.pi, np.pi, 100)
y = np.sinh(x)

plt.grid()
plt.title('$y = \sinh x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e6dcf60>]

np.cosh(x)

双曲線余弦関数です。

$ \displaystyle \cosh x = \frac{e^x + e^{-x}}{2} $
print(np.cosh(0))
print(np.cosh(-1))
print(np.cosh(1))
1.0
1.5430806348152437
1.5430806348152437
x = np.linspace(-np.pi, np.pi, 100)
y = np.cosh(x)

plt.grid()
plt.title('$y = \cosh x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x1142c8860>]

np.tanh(x)

双曲線正接関数です。

$ \displaystyle \tanh x = \frac{\sinh x}{\cosh x} $

深層学習の活性化関数に利用される事があります。

print(np.tanh(0))
print(np.tanh(-1))
print(np.tanh(1))
0.0
-0.7615941559557649
0.7615941559557649
x = np.linspace(-np.pi, np.pi, 100)
y = np.tanh(x)

plt.grid()
plt.title('$y = \\tanh x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e4a8a90>]

np.arcsinh(x)

$\sinh x$の逆関数です。

print(np.arcsinh(0))
print(np.arcsinh(1))
print(np.arcsinh(-1))
0.0
0.881373587019543
-0.881373587019543
x = np.linspace(-np.pi, np.pi, 100)
y = np.arcsinh(x)

plt.grid()
plt.title('$y = \\arcsinh x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e7d2588>]

np.arccosh(x)

$\cosh x$の逆関数です。

print(np.arccosh(1))
0.0
x = np.linspace(1, np.pi, 100)
y = np.arccosh(x)

plt.grid()
plt.title('$y = \\arccosh x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e917438>]

np.arctanh(x)

$\tanh x$の逆関数です。

print(np.arctanh(0))
print(np.arctanh(0.5))
print(np.arctanh(-0.5))
0.0
0.5493061443340549
-0.5493061443340549
x = np.linspace(-0.99, 0.99, 100)
y = np.arctanh(x)

plt.grid()
plt.title('$y = \\arctanh x$', fontsize=16)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11e9e4278>]

np.deg2rad(x)

弧度法からラジアン表記に変換します。

np.deg2rad(45) # => pi / 4
0.7853981633974483

np.rad2deg(x)

弧度法からラジアン表記に変換します。

np.rad2deg(np.pi / 4)
45.0