Matplotlib/SciPy/pandas/NumPy サンプルコード
[History] [Last Modified] (2019/03/17 15:13:53)
Recent posts
What is this site?
A platform for makers to share their knowledge.

Share your robots/products with others.
New robots/products

概要

Python で数学的なことを試すときに利用される Matplotlib/SciPy/pandas/NumPy についてサンプルコードを記載します。

チュートリアル

インストール

pip でインストールする場合

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

apt/yum でインストールする場合

pip と比較してインストールされるバージョンが古くなります。

sudo apt install python-numpy python-scipy python-matplotlib ipython python-pandas python-sympy python-nose

新規 ndarray 配列の作成

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()

配列としての演算

要素の合計値

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)

可視化

画像データの表示 imshow

Uploaded Image

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()

グラフの表示 plot

Uploaded Image

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)

同次変換

ある座標系の点 (x,y,z) を別の座標系で表現したときの座標 (X,Y,Z) は、二つの座標系の平行移動と回転移動を表現する変換行列を用いて以下のようになります。

|X|   |      |tx|   |x|
|Y| = |  R   |ty| . |y|
|Z|   |_ _ _ |tz|   |z|
|1|   |0 0 0 | 1|   |1|

例えば、ある座標系が、ワールド座標系から (10, 10, 10) 平行移動されて更にワールド座標系の z 軸まわりに -90 度回転したものであった場合、その座標系における点 (1,0,0) はワールド座標系において以下のように計算できます。

import numpy as np

theta = 90 * (np.pi/180.0)

transform = np.array([
    [np.cos(theta), -np.sin(theta), 0, 10],
    [np.sin(theta),  np.cos(theta), 0, 10],
    [            0,              0, 1, 10],
    [            0,              0, 0,  1]
])

pos = np.array([
    [1],
    [0],
    [0],
    [1]
])

posWorld = transform.dot(pos)

# array([[10.],
#        [11.],
#        [10.],
#        [ 1.]])

その他の用語

Related pages
    概要 コンピュータビジョン向けライブラリの一つである OpenCV を Python から扱うための環境を準備します。 都度参照するためのドキュメント OpenCV modules OpenCV-Python Tutorials OpenCV Tutorials インストール ビルド済みバイナリを apt/yum インストールする方法
    概要 コンピュータグラフィックスのレンダリングライブラリの一つである OpenGL を Python3 から利用するための Linux 環境を準備して、設定例およびサンプルコードを記載します。特にここでは Debian9 を利用します。 Getting Started Language bindings / Python
    概要 3D アプリケーション間でデータを交換するためのファイルフォーマットの一つに COLLADA (COLLAborative Design Activity) があります。コンピュータグラフィックスのレンダリングに必要な情報およびその他付随する情報を格納できます。COLLADA の仕様にしたがった XML スキーマファイルの拡張子は通常
    概要 ロボットアプリケーションの開発環境の一つ OpenRAVE (Open Robotics Automation Virtual Environment) の環境を構築するための手順を記載します。ここでは特に Debian9 を利用します。 インストール 依存パッケージ ビルドツール関連 sudo apt install git build-essential cmake
    概要 ROS による開発で必要となる 3D モデルは STL や COLLADA データとして作成できます。FreeCAD と Blender を用いて直方体のデータを作成してみます。いずれの場合も、ROS 等で扱うために単位はメートルで出力します。 FreeCAD による直方体 STL の作成 STL はフェイスに三角形を利用した 3D モデル
    概要 NumPy から扱えるデータをファイルに保存するためのフォーマットとして HDF5 (Hierarchical Data Format) が利用されます。これを Python から扱うためには h5py を利用します。 pip install h5py サンプルコード NumPy データの保存 import h5py import numpy as np with h5py.F