Matplotlib/SciPy/pandas/NumPy サンプルコード
[履歴] [最終更新] (2018/12/03 13:43:26)
1
作品
407
技術情報
最近の投稿
ここは
趣味の電子工作を楽しむ人のためのハードウェア情報共有サイト

技術情報や作品の投稿機能、リアルタイム遠隔操作 API をご利用いただけます。
新着作品

概要

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.]])
関連ページ
    概要 コンピュータビジョン向けライブラリの一つである 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