Python で数学的なことを試すときに利用される Matplotlib/SciPy/pandas/NumPy についてサンプルコードを記載します。
チュートリアル
pip のインストール
sudo apt install python-pip
ユーザ毎にインストールする場合
pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
ls ~/.local/lib/python2.7/site-packages/
システム全体にインストールする場合
sudo pip install numpy scipy matplotlib ipython jupyter pandas sympy nose
pip と比較してインストールされるバージョンが古くなります。
sudo apt install python-numpy python-scipy python-matplotlib ipython python-pandas python-sympy python-nose
import numpy as np
a = np.array([[1,0],
[0,1]])
a = np.arange(15).reshape(3, 5)
a.resize(3,5) # 破壊的に自身を変更
型の明記
np.array( [ [1,2], [3,4] ], dtype=np.float64 )
すべて 0/1/未定 (dtype 未指定時は np.float64
)
np.zeros( (2,2), dtype=np.int64 )
np.ones( (2,2), dtype=np.int64 )
np.empty((2,2))
乱数
np.random.random((2,2))
10 以上 30 未満で +5
np.arange(10, 30, 5)
np.arange(0, 2, 0.3)
10 以上 30 以下で 10 要素
np.linspace(10, 30, 10)
np.linspace(0, 2*np.pi, 100)
b = a.copy()
一次元配列の取得
b = a.ravel()
条件を満たすインデックスを取得
a = np.array([1, 2, 3], dtype=np.uint8)
np.where(a == 2)[0][0] #=> 1
要素の合計値
np.sum(a)
a.sum()
要素の最大値
np.max(a)
a.max()
次元数
a.ndim
各次元の要素数
a.shape
全次元の要素数の合計
a.size
要素の型およびバイト数
a.dtype.name
a.dtype.itemsize
a.itemsize
各要素の値を二乗
a**2
a * a
各要素に対して条件判定
a < 2
各次元毎の演算
a.sum(axis=0) # 列j の合計
a.sum(axis=1) # 行i の合計
関数の各要素への適用
np.exp(a)
np.sqrt(a)
np.sin(a)
np.floor(a)
結合/分割
np.vstack((a,a))
np.hstack((a,a))
np.vsplit(a,999)
np.hsplit(a,999)
加減算
a + a
a - a
行列の積
a.dot(a)
転置行列
a.T
a.transpose()
逆行列
np.linalg.inv(a)
単位行列
np.eye(サイズ)
トレース
np.trace(a)
外積、内積、ノルム
from numpy import cross
from numpy import array
from numpy.linalg import norm
a = array([1,2,3])
cross(a, a)
a.dot(a)
norm(a)
軸を指定した、多次元配列 (テンソル) の転置
x = np.random.rand(1, 2, 3, 4)
y = x.transpose(1, 0, 3, 2)
print(x.shape) #=> (1, 2, 3, 4)
print(y.shape) #=> (2, 1, 4, 3)
import numpy as np
import matplotlib.pyplot as plt
myimg = np.array([
[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]],
[[0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]])
plt.imshow(myimg)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
a = np.array([9,1,9,1])
plt.plot(a)
plt.show()
import numpy as np
a = [1,1,1,1,1]
def MovingAverage(a, n=3):
ret = np.cumsum(a, dtype=float)
ret[n:] = ret[n:] - ret[:-n]
return ret[n - 1:] / n
MovingAverage(a)