Download - Python講座 第3回
![Page 1: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/1.jpg)
Python 講座 2015 年版 第 3 回名古屋工業大学大学院工学研究科創成シミュレーション工学専攻 2 年学籍番号 :26413508大脇 謙太
![Page 2: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/2.jpg)
PYTHONを使ったプログラミング
![Page 3: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/3.jpg)
前回までのあらすじ
第 1 回組み込み型を説明 第 2 回オブジェクト指向を説明
![Page 4: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/4.jpg)
今回の目標
オブジェクト指向を Python を使って理解しよう
![Page 5: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/5.jpg)
インタプリタ言語• Python はインタプリタ言語– ソースコードをコンパイルしない方式
• Python は対話型– Unix のシェル ( ターミナル ) みたいだよという話
遅いけど、融通が利いて扱いやすい
Break
![Page 6: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/6.jpg)
オブジェクト指向
一度、おさらいしてみよう
![Page 7: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/7.jpg)
オブジェクト
一つのテーマをもとに集めたデータと命令 ( 処理 )
vol の値Gate の値
Comp の値
Gate(x)Volume( x )
Effect( ON/OFF)
オブジェクトデータ
手続き
![Page 8: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/8.jpg)
Python で使われるオブジェクト
集合型
組み込み型そのもの ( ただし、数値型は例外 )
文字列 リスト タプル 辞書 集合
![Page 9: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/9.jpg)
クラス と インスタンスlist クラス ( 設計書 )
インスタンスを生成する手続き( コンストラクタ )=> クラス名に’ ()’ をつける
list インスタンス
![Page 10: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/10.jpg)
動的型付け
インスタンスを生成
変数名 ( ステッカ )“l” を付ける
以後、 l で呼び出せる
![Page 11: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/11.jpg)
メソッド
メソッドは、オブジェクトの後ろに‘.( ドット ) 関数名 (args)’
list.append(x)リストの末尾に要素を一つ追加します
< メソッド >
ちゃんと追加されている
オブジェクトに与えられた機能を使う
![Page 12: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/12.jpg)
List 型のメソッドメソッド名 説明list. append(x) リストの末尾に要素を一つ追加します。 list. extend(L) 指定したリストの要素を対象のリストに追加し、リストを拡張します。list. insert(i, x) 指定した位置に要素を挿入します。list. remove(x) リスト中で、値 x を持つ最初の要素を削除しますlist. pop([i]) リスト中の指定された位置にある要素をリストから削除して、その要素を返
します。list. clear() リスト中のすべての要素を削除します。list. index(x) リスト中で、値 x を持つ最初の要素のインデクスを返しますlist. count(x) リストでの x の出現回数を返します。list. sort() リストの項目を、インプレース演算でソートします。list. reverse() リストの要素を、インプレース演算で逆順にします。
Python 2.7ja1 documentation より - http://docs.python.jp/2.7/tutorial/datastructures.html
![Page 13: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/13.jpg)
おすすめの Web サイト人工知能に関する断創録
http://aidiary.hatenablog.com/
管理人 id:aidiary 氏ブログの説明人工知能、認知科学、心理学、ロボティクス、生物学、ゲーム AI などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、音声認識・音声合成、複雑系(カオス、力学系)、 Deep Learning など。
![Page 14: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/14.jpg)
おすすめの Web サイト機械学習の「朱鷺の杜 Wiki 」
http://ibisforest.org/
管理人 あかほ氏副管理人 しましま氏サイトの説明朱鷺の杜 Wiki は,機械学習に関連した,データマイニング,情報理論,計算論的学習理論,統計,統計物理についての情報交換の場です.これら機械学習関係の話題,リンク,関連事項,書籍・論文紹介などの情報をを扱います.
管理者ブログ : ( あかほ氏 )http://ibisforest.blog4.fc2.com/
![Page 15: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/15.jpg)
ところでこのインスタンスは後で呼び出せない ( 参照できないから )
参照できないインスタンスは 自動的に削除していくガベージコレクション
メモリリークを防いでくれる
![Page 16: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/16.jpg)
ライブラリ (LIBRARY)
§1. モジュールとパッケージ§2. import, from§3. 拡張ライブラリ
![Page 17: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/17.jpg)
プログラムを組む• プログラムってなに ?– 台本。命令・指示の順番を書き込む– ドラマや映画、アニメの台本と基本的には同じ
• “ 誰が” , ” どのタイミングで” , ”何をするか”を書く
組み込み型だけでも十分なプログラムを書ける
Pro-graming : 先進的な文法
![Page 18: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/18.jpg)
ところが組み込み型だけではどうにもならないこともある
(苦労が多いこともある )
例 ) sin 関数作ってくれよ .
どこかにいい関数おちてないかな…
研究を進めていくなら、 sin 関数は避けては通れない道うーむ…
![Page 19: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/19.jpg)
手は打ってある基礎的な問題を解決する手法はすでに用意してある
例 ) sin 関数作ってくれよ .
Python 「もうあるんだなぁ、これが。」Python 「つ mathモジュール」
外部に”モジュール”という形で用意してあります
Python には標準モジュールのライブラリが付属しています。Library : 図書館
![Page 20: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/20.jpg)
§1.モジュールモジュールは Python の定義や文が入ったファイル
– 定義 : 定数 , 関数定義 , クラス定義 – 文 : 初期化 , グローバル変数 [ ]※
[ ] ※ モジュール内で定義されたグローバル変数のスコープはそのモジュールのみで有効です。他のモジュールと、同じグローバル変数名で定義しても、変数の衝突は起こりません。
モジュール = 本、参考書という捉え方でよいと思います。
![Page 21: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/21.jpg)
先ほどの例
mathモジュールの sin 関数を使うには
例 ) sin 関数作ってくれよ .
Python 「もうあるんだなぁ、これが。」Python 「つ mathモジュール」
この表現方法は インスタンスとメソッドの関係math.sin( x )
list.append(x)リストの末尾に要素を一つ追加します
![Page 22: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/22.jpg)
パッケージPython にはモジュール以外に”パッケージ”というものも存在します
に対し、
モジュール = 本 , 参考書 パッケージ = シリーズ本 , 教科書セット
モジュールが本一冊に対し、パッケージは複数の本のセットを表します。当然、パッケージはモジュールよりも広い範囲をカバーしたオブジェクトです
![Page 23: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/23.jpg)
パッケージの構成
package
subpackage
subpackage
initialize
module
module
initialize…
…
![Page 24: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/24.jpg)
おさらい• Python はライブラリにモジュール、パッケージを備えている
– ライブラリ = 図書館– モジュール = 本、参考書 ( 一冊 )– パッケージ = シリーズ本、教科書セット ( 複数 )
• ライブラリからモジュール、パッケージを引っ張ってくることでプログラミングでできることを増やす– レポートを書くのに、図書館で本を借りてくる
![Page 25: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/25.jpg)
前項よりライブラリからモジュール、パッケージを引っ張ってくることでプログラミングでできることを増やす
ソースコードには、モジュールやパッケージを引用していることを明示する何かが必要
Import 文
![Page 26: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/26.jpg)
§2. importモジュールをスクリプト ( ソースコード ) で利用するために必要な文
import モジュール名で、呼び出す
例 : import math(mathモジュールをインポート )
厳密には、モジュールオブジェクト ( インスタンス ) をそのモジュール名を変数名にして代入しているような感覚変数の動的型付けがはたらいている
math モジュールオブジェクトは singleton であり、生成できるインスタンスがユニークである点に注意してください
![Page 27: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/27.jpg)
疑問点Q. モジュールから特定の関数、クラス パッケージから特定のモジュールだけを利用することは ?
A. 可能です。 from 文を使いますQ. import の際、モジュールにつける変数名を変えることは ?
A. 可能です。 as 文を使いますQ. 同じモジュールオブジェクトを複数生成することは ?
A. できません。各モジュールは一つのみ生成可能 (singleton) です。
![Page 28: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/28.jpg)
from
• モジュールから特定の関数、クラスを import• パッケージから特定のモジュールを import
from モジュール名 import 関数名from パッケージ名 import モジュール名
• パッケージから特定のモジュールの特定の関数を import
from パッケージ名 .モジュール名 import 関数名
select
![Page 29: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/29.jpg)
from について
通常の import
from を使ったimport
mathモジュールから sin 関数のみをimport
math. を省略して記述可mathモジュールの sin と pi をそれぞれ呼出
mathモジュール全体を import
from を使って import した場合、import した関数、クラス、定数しか使えない( 今回は sin 関数のみ )
from を使った import では必要な関数 , 定数 , クラスをすべてimport する必要あり
![Page 30: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/30.jpg)
as
モジュールを別名で import
import モジュール名 as 別名例 : import math as m import numpy as np
(注 ) as を使って別名で import した場合、• 別名でモジュールは呼び出せる• モジュール名ではモジュールを呼び出すことはできない
m
mathモジュール
別名で import
O.K.
error
![Page 31: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/31.jpg)
おさらいのおさらい
Python には標準モジュールのライブラリが付属している
![Page 32: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/32.jpg)
§3. ライブラリライブラリ (図書館 ) は拡張することができる
![Page 33: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/33.jpg)
拡張ライブラリ
標準ライブラリ拡張ライブラリ
Add!
![Page 34: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/34.jpg)
1. distutils : パッケージ管理用モジュール ( 標準モジュール )
2. setuptools : distutils の強化版– easy_install : 付属ツール
3. pip : easy_install の強化版
PyPI : the Python Package Index
Web上のライブラリリポジトリを利用– distribute のインストール
• $> wget http://python-distribute.org/distribute_setup.py• $> python distribute_setup.py
– easy_install の利用• $> easy_install package_name
– pip の利用• $> pip install package_name• $> pip uninstall package_name• $> pip freeze• $> pip search key_word
2015 年現在 pip がもっとも主流であると考えられますWindows の場合、実行形式 (.exe) のインストーラが用意されているパッケージもあります
![Page 35: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/35.jpg)
代表的な (拡張 )パッケージこれぐらい入れておくと、あとあと困らないかなぁ…程度
![Page 36: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/36.jpg)
ほぼ必須 .非常に優れたライブラリ
Numpy : Python の数値計算を代表するパッケージTheano : 同じく数値計算用 . 自動微分のサポート Scipy : Numpy を応用し、科学計算向けに強化Matplotlib : 高機能の作図用パッケージpySpark : 分散処理 (Spark) を Python で使えるようにしたものiPython : 強化型対話シェル . notebook 機能が非常に便利
![Page 37: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/37.jpg)
個人の研究に合わせて• pandas : データ分析ライブラリ , かなり高機能と好評• pylearn2 : DeepLearning用パッケージ . Theano を応用• PIL : 画像処理用ライブラリ . 2.x 系まで
– Pillow : 画像処理用ライブラリ 3 系• scikit-learn : 機械学習ライブラリ• openCV : コンピュータビジョン用ライブラリ (Python用 )
• NetworkX : ネットワーク解析用のパッケージ
![Page 38: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/38.jpg)
GUI 系 ( どれか 1 つ入っているとよいかも )
• TkInter : 標準パッケージ . IDLE はこれでできている• wxPython : wxWidgets 系• pyQt : Qt 系• pyGTK : GTK 系• pygame : 2D用ゲームライブラリ• kivy : pygame をもとにした汎用 GUI ライブラリ• Pyglet : Python3 対応 . 良質 GUI(?)
![Page 39: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/39.jpg)
その他• pyaudio : オーディオ操作用ライブラリ• date-util• pyparsing
• socket : 低レベルソケット通信 . TCP/UDP. 標準
ここ 2 つは Matplotlib で必要
![Page 40: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/40.jpg)
Numpy を使用行列の演算
numpy パッケージをnp という別名でインポート
numpy の array メソッドを使用(2×3 の行列を生成 )
numpy の randomモジュールにあるrand メソッドを使用(3×2 の行列を生成 )
内積をとる(2×2行列 )
b と c の転置について、各要素を掛け算(2×3行列 )
![Page 41: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/41.jpg)
WAVファイルを FFTwaveモジュール ( 標準 ), numpy を使用します
wave ファイルを読み込み
128点ごとに FFT
![Page 42: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/42.jpg)
matplotlib(pylab) を使用します
をプロット
![Page 43: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/43.jpg)
pyQt を使って GUI を作成参照サイト : Hope is a Dream. Dream is a Hope.http://hope-is-dream.hatenablog.com/entry/2015/01/24/143402
PCA(主成分分析 )
SlideShare : http://www.slideshare.net/RansuiIso/pyqtgui
![Page 44: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/44.jpg)
IPython Notebook
IPython(Interactive Python)科学計算をより対話的かつ便利に
IPython NotebookIPython を Web ブラウザのノートブック上で編集・保存・共有
非常に可読性の高い文書を作成できる
![Page 45: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/45.jpg)
IPython Notebook
![Page 46: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/46.jpg)
Scipy
2014 年度版 Pythonゼミより抜粋
Python Semi 第4回黒柳研究室M1
学籍番号:26413508大脇 謙太
![Page 47: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/47.jpg)
参考文献• YATTSUKE BLOG
– http://hennohito.cocolog-nifty.com/blog/2013/02/python-gui-f3c1.html
• 科学技術計算のために Python を始めよう。– http://turbare.net/transl/scipy-lecture-notes/intro/
• Python のすすめ• IPython Notebook チュートリアル
– http://qiita.com/payashim/items/d4fe5227b21a5215e78b
![Page 48: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/48.jpg)
参考文献• Fernando Perez
– http://blog.fperez.org/2012/01/ipython-notebook-historical.html
• IPython Notebook 入門 ~ファイル保存先について– http://qiita.com/HirofumiYashima/items/bb187ebfc61662a7295e
![Page 49: Python講座 第3回](https://reader036.vdocuments.mx/reader036/viewer/2022081520/58ee17fa1a28ab3a1a8b45fb/html5/thumbnails/49.jpg)
次回予告最後はまとめ . 細かな注意点