python講座 第3回

49
Python 講講 2015 講講 講 3 講 講講講講講講講講講講 講講講講講 講講講講講講講講講講講講講講 2 講 講講講講 :26413508 講講 講講

Upload: kenta-owaki

Post on 12-Apr-2017

989 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Python講座 第3回

Python 講座 2015 年版 第 3 回名古屋工業大学大学院工学研究科創成シミュレーション工学専攻 2 年学籍番号 :26413508大脇 謙太

Page 2: Python講座 第3回

PYTHONを使ったプログラミング

Page 3: Python講座 第3回

前回までのあらすじ

第 1 回組み込み型を説明 第 2 回オブジェクト指向を説明

Page 4: Python講座 第3回

今回の目標

オブジェクト指向を Python を使って理解しよう

Page 5: Python講座 第3回

インタプリタ言語• Python はインタプリタ言語– ソースコードをコンパイルしない方式

• Python は対話型– Unix のシェル ( ターミナル ) みたいだよという話

遅いけど、融通が利いて扱いやすい

Break

Page 6: Python講座 第3回

オブジェクト指向

一度、おさらいしてみよう

Page 7: Python講座 第3回

オブジェクト

一つのテーマをもとに集めたデータと命令 ( 処理 )

vol の値Gate の値

Comp の値

Gate(x)Volume( x )

Effect( ON/OFF)

オブジェクトデータ

手続き

Page 8: Python講座 第3回

Python で使われるオブジェクト

集合型

組み込み型そのもの ( ただし、数値型は例外 )

文字列 リスト タプル 辞書 集合

Page 9: Python講座 第3回

クラス と インスタンスlist クラス ( 設計書 )

インスタンスを生成する手続き( コンストラクタ )=> クラス名に’ ()’ をつける

list インスタンス

Page 10: Python講座 第3回

動的型付け

インスタンスを生成

変数名 ( ステッカ )“l” を付ける

以後、 l で呼び出せる

Page 11: Python講座 第3回

メソッド

メソッドは、オブジェクトの後ろに‘.( ドット ) 関数名 (args)’

list.append(x)リストの末尾に要素を一つ追加します

< メソッド >

ちゃんと追加されている

オブジェクトに与えられた機能を使う

Page 12: Python講座 第3回

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回

おすすめの Web サイト人工知能に関する断創録

http://aidiary.hatenablog.com/

管理人 id:aidiary 氏ブログの説明人工知能、認知科学、心理学、ロボティクス、生物学、ゲーム AI などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、音声認識・音声合成、複雑系(カオス、力学系)、 Deep Learning など。

Page 14: Python講座 第3回

おすすめの Web サイト機械学習の「朱鷺の杜 Wiki 」

http://ibisforest.org/

管理人 あかほ氏副管理人 しましま氏サイトの説明朱鷺の杜 Wiki は,機械学習に関連した,データマイニング,情報理論,計算論的学習理論,統計,統計物理についての情報交換の場です.これら機械学習関係の話題,リンク,関連事項,書籍・論文紹介などの情報をを扱います.

管理者ブログ : ( あかほ氏 )http://ibisforest.blog4.fc2.com/

Page 15: Python講座 第3回

ところでこのインスタンスは後で呼び出せない ( 参照できないから )

参照できないインスタンスは 自動的に削除していくガベージコレクション

メモリリークを防いでくれる

Page 16: Python講座 第3回

ライブラリ (LIBRARY)

§1. モジュールとパッケージ§2. import, from§3. 拡張ライブラリ

Page 17: Python講座 第3回

プログラムを組む• プログラムってなに ?– 台本。命令・指示の順番を書き込む– ドラマや映画、アニメの台本と基本的には同じ

• “ 誰が” , ” どのタイミングで” , ”何をするか”を書く

組み込み型だけでも十分なプログラムを書ける

Pro-graming : 先進的な文法

Page 18: Python講座 第3回

ところが組み込み型だけではどうにもならないこともある

(苦労が多いこともある )

例 ) sin 関数作ってくれよ .

どこかにいい関数おちてないかな…

研究を進めていくなら、 sin 関数は避けては通れない道うーむ…

Page 19: Python講座 第3回

手は打ってある基礎的な問題を解決する手法はすでに用意してある

例 ) sin 関数作ってくれよ .

Python 「もうあるんだなぁ、これが。」Python 「つ mathモジュール」

外部に”モジュール”という形で用意してあります

Python には標準モジュールのライブラリが付属しています。Library : 図書館

Page 20: Python講座 第3回

§1.モジュールモジュールは Python の定義や文が入ったファイル

– 定義 : 定数 , 関数定義 , クラス定義 – 文 : 初期化 , グローバル変数 [ ]※

[ ] ※ モジュール内で定義されたグローバル変数のスコープはそのモジュールのみで有効です。他のモジュールと、同じグローバル変数名で定義しても、変数の衝突は起こりません。

モジュール = 本、参考書という捉え方でよいと思います。

Page 21: Python講座 第3回

先ほどの例

mathモジュールの sin 関数を使うには

例 ) sin 関数作ってくれよ .

Python 「もうあるんだなぁ、これが。」Python 「つ mathモジュール」

この表現方法は インスタンスとメソッドの関係math.sin( x )

list.append(x)リストの末尾に要素を一つ追加します

Page 22: Python講座 第3回

パッケージPython にはモジュール以外に”パッケージ”というものも存在します

に対し、

モジュール = 本 , 参考書 パッケージ = シリーズ本 , 教科書セット

モジュールが本一冊に対し、パッケージは複数の本のセットを表します。当然、パッケージはモジュールよりも広い範囲をカバーしたオブジェクトです

Page 23: Python講座 第3回

パッケージの構成

package

subpackage

subpackage

initialize

module

module

initialize…

Page 24: Python講座 第3回

おさらい• Python はライブラリにモジュール、パッケージを備えている

– ライブラリ = 図書館– モジュール = 本、参考書 ( 一冊 )– パッケージ = シリーズ本、教科書セット ( 複数 )

• ライブラリからモジュール、パッケージを引っ張ってくることでプログラミングでできることを増やす– レポートを書くのに、図書館で本を借りてくる

Page 25: Python講座 第3回

前項よりライブラリからモジュール、パッケージを引っ張ってくることでプログラミングでできることを増やす

ソースコードには、モジュールやパッケージを引用していることを明示する何かが必要

Import 文

Page 26: Python講座 第3回

§2. importモジュールをスクリプト ( ソースコード ) で利用するために必要な文

import モジュール名で、呼び出す

例 : import math(mathモジュールをインポート )

厳密には、モジュールオブジェクト ( インスタンス ) をそのモジュール名を変数名にして代入しているような感覚変数の動的型付けがはたらいている

math モジュールオブジェクトは singleton であり、生成できるインスタンスがユニークである点に注意してください

Page 27: Python講座 第3回

疑問点Q. モジュールから特定の関数、クラス パッケージから特定のモジュールだけを利用することは ?

A. 可能です。 from 文を使いますQ. import の際、モジュールにつける変数名を変えることは ?

A. 可能です。 as 文を使いますQ. 同じモジュールオブジェクトを複数生成することは ?

A. できません。各モジュールは一つのみ生成可能 (singleton) です。

Page 28: Python講座 第3回

from

• モジュールから特定の関数、クラスを import• パッケージから特定のモジュールを import

from モジュール名 import 関数名from パッケージ名 import モジュール名

• パッケージから特定のモジュールの特定の関数を import

from パッケージ名 .モジュール名 import 関数名

select

Page 29: Python講座 第3回

from について

通常の import

from を使ったimport

mathモジュールから sin 関数のみをimport

math. を省略して記述可mathモジュールの sin と pi をそれぞれ呼出

mathモジュール全体を import

from を使って import した場合、import した関数、クラス、定数しか使えない( 今回は sin 関数のみ )

from を使った import では必要な関数 , 定数 , クラスをすべてimport する必要あり

Page 30: Python講座 第3回

as

モジュールを別名で import

import モジュール名 as 別名例 : import math as m import numpy as np

(注 ) as を使って別名で import した場合、• 別名でモジュールは呼び出せる• モジュール名ではモジュールを呼び出すことはできない

m

mathモジュール

別名で import

O.K.

error

Page 31: Python講座 第3回

おさらいのおさらい

Python には標準モジュールのライブラリが付属している

Page 32: Python講座 第3回

§3. ライブラリライブラリ (図書館 ) は拡張することができる

Page 33: Python講座 第3回

拡張ライブラリ

標準ライブラリ拡張ライブラリ

Add!

Page 34: Python講座 第3回

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回

代表的な (拡張 )パッケージこれぐらい入れておくと、あとあと困らないかなぁ…程度

Page 36: Python講座 第3回

ほぼ必須 .非常に優れたライブラリ

Numpy : Python の数値計算を代表するパッケージTheano : 同じく数値計算用 . 自動微分のサポート Scipy : Numpy を応用し、科学計算向けに強化Matplotlib : 高機能の作図用パッケージpySpark : 分散処理 (Spark) を Python で使えるようにしたものiPython : 強化型対話シェル . notebook 機能が非常に便利

Page 37: Python講座 第3回

個人の研究に合わせて• pandas : データ分析ライブラリ , かなり高機能と好評• pylearn2 : DeepLearning用パッケージ . Theano を応用• PIL : 画像処理用ライブラリ . 2.x 系まで

– Pillow : 画像処理用ライブラリ 3 系• scikit-learn : 機械学習ライブラリ• openCV : コンピュータビジョン用ライブラリ (Python用 )

• NetworkX : ネットワーク解析用のパッケージ

Page 38: Python講座 第3回

GUI 系 ( どれか 1 つ入っているとよいかも )

• TkInter : 標準パッケージ . IDLE はこれでできている• wxPython : wxWidgets 系• pyQt : Qt 系• pyGTK : GTK 系• pygame : 2D用ゲームライブラリ• kivy : pygame をもとにした汎用 GUI ライブラリ• Pyglet : Python3 対応 . 良質 GUI(?)

Page 39: Python講座 第3回

その他• pyaudio : オーディオ操作用ライブラリ• date-util• pyparsing

• socket : 低レベルソケット通信 . TCP/UDP. 標準

ここ 2 つは Matplotlib で必要

Page 40: Python講座 第3回

Numpy を使用行列の演算

numpy パッケージをnp という別名でインポート

numpy の array メソッドを使用(2×3 の行列を生成 )

numpy の randomモジュールにあるrand メソッドを使用(3×2 の行列を生成 )

内積をとる(2×2行列 )

b と c の転置について、各要素を掛け算(2×3行列 )

Page 41: Python講座 第3回

WAVファイルを FFTwaveモジュール ( 標準 ), numpy を使用します

wave ファイルを読み込み

128点ごとに FFT

Page 42: Python講座 第3回

matplotlib(pylab) を使用します

をプロット

Page 43: Python講座 第3回

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回

IPython Notebook

IPython(Interactive Python)科学計算をより対話的かつ便利に

IPython NotebookIPython を Web ブラウザのノートブック上で編集・保存・共有

非常に可読性の高い文書を作成できる

Page 45: Python講座 第3回

IPython Notebook

Page 46: Python講座 第3回

Scipy

2014 年度版 Pythonゼミより抜粋

Python Semi 第4回黒柳研究室M1

学籍番号:26413508大脇 謙太

Page 47: Python講座 第3回

参考文献• 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回

参考文献• Fernando Perez

– http://blog.fperez.org/2012/01/ipython-notebook-historical.html

• IPython Notebook 入門 ~ファイル保存先について– http://qiita.com/HirofumiYashima/items/bb187ebfc61662a7295e

Page 49: Python講座 第3回

次回予告最後はまとめ . 細かな注意点