MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

オンライン上の数値演算・解析系のPythonチュートリアルScipy Lecture Notesを読んで学んだこと

目次

はじめに

下記のScipy Lecture Noteという、

オンライン上の数値演算・解析系のPythonチュートリアルが

素晴らしかったので、

読んで心に残ったことをメモしておきたいと思います。

 

ツールやワークフローを使った科学技術計算

MATLABの問題点:

  • 言語の基本機能が貧弱で先進的なユーザからすると制限が多く感じられる。

  • フリーでない。

 

Pythonの問題点:

  • 開発環境は, 例えば Matlab と比べると少し使いにくい (より geek 向け).

  • 専門向けのソフトウェアやツールにあるアルゴリズム全てがあるわけではない.

 

Pythonにおける三次元可視化ツールとしては、

Mayaviというツールがある。

code.enthought.com

 

Jupyter notebookでは、

%timeit

の後にコードを記述すると、そのコードの計算時間を計測してくれる。

また、モジュールや関数の後ろに?(はてな)をつけると、

docstringを表示してくれる。

f:id:meison_amsl:20170529045921p:plain

 

プログラミング言語 Python

ファイル名のパターンマッチングにはglobが便利

11.7. glob — Unix 形式のパス名のパターン展開 — Python 3.6.5 ドキュメント

 

NumPy: 数値データの作成と処理

Pythonのリスト内包表記よりも、

numpyのarrayを使ったブロードキャスト計算の方が、

計算が早い。

 

ファンシーインデックスの例:

aの中で3で割り切れる要素に-1を入れる

a[a % 3 == 0] = -1

 

Numpyによる多項式の計算

f:id:meison_amsl:20170529082902p:plain

 

Numpyによる多項式近似

f:id:meison_amsl:20170529094821p:plain

f:id:meison_amsl:20170529094838p:plain

 

Scipy: 高水準の科学技術計算

scipyのサブモジュール

  • scipy.cluster ベクトル量子化 / K 平均法

  • scipy.constants 物理数学定数

  • scipy.fftpack Fourier 変換

  • scipy.integrate 積分ルーチン

  • scipy.interpolate 補間

  • scipy.io データ入出力

  • scipy.linalg 線形代数ルーチン

  • scipy.ndimage n-次元画像パッケージ

  • scipy.odr 直交距離回帰

  • scipy.optimize 最適化

  • scipy.signal 信号処理

  • scipy.sparse 疎行列

  • scipy.spatial 空間データ構造とアルゴリズム

  • scipy.special 任意の数学特殊関数

  • scipy.stats 統計

 

scipy.io

MATLABの.matファイルは

savematとloadmatで読み書きができる。

 

spio.savemat('file.mat', {'a': a})

data = spio.loadmat('file.mat', struct_as_record=True)

 

scipy.optimize

様々なアルゴリズムの最適化が利用できる

詳細は下記を参照

github.com

 

scipy.interpolate

様々な補間を使うことができます。

下記が実際の使い方です。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com