Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonの概要とGoogle Colabの使い方 / Python 01
Search
kaityo256
PRO
September 24, 2019
Education
3
2.8k
Pythonの概要とGoogle Colabの使い方 / Python 01
プログラミング基礎同演習01
kaityo256
PRO
September 24, 2019
Tweet
Share
More Decks by kaityo256
See All by kaityo256
デバッグの話 / Debugging for Beginners
kaityo256
PRO
9
920
ビット演算の話 / Let's play with bit operations
kaityo256
PRO
4
240
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
15
4.9k
制限ボルツマンマシンの話 / Introduction of RBM
kaityo256
PRO
3
830
論文の読み方 / How to survey
kaityo256
PRO
220
160k
リンゴゲームと貧富の差 / Origin of the disparity of wealth
kaityo256
PRO
14
14k
渡辺研Slackの使い方 / Slack Local Rule
kaityo256
PRO
9
8.5k
時間の矢について / Time's arrow
kaityo256
PRO
12
17k
t-SNEをざっくりと理解 / Overview of t-SNE
kaityo256
PRO
2
1.3k
Other Decks in Education
See All in Education
Medicare 101 for 2025
robinlee
PRO
0
230
老人会? いえ、技術継承です @ builderscon 2024 LT
s3i7h
0
110
Ch2_-_Partie_3.pdf
bernhardsvt
0
100
construindo uma carreira com opensource
caarlos0
0
240
TP5_-_UV.pdf
bernhardsvt
0
100
開発終了後こそ成長のチャンス!プロダクト運用を見送った先のアクションプラン
ohmori_yusuke
2
160
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
4
14k
SQL初級中級_トレーニング【株式会社ニジボックス】
nbkouhou
0
20k
Master of Applied Science & Engineering: Computer Science & Master of Science in Applied Informatics
signer
PRO
0
430
20241002_Copilotって何?+Power_AutomateのCopilot
ponponmikankan
1
160
【COPILOT無料セミナー】エンゲージメントと自律性の高いプロジェクト型人材育成に向けて~プロジェクト・ベースド・ラーニング(PBL)という選択肢~
copilot
PRO
0
130
Comezando coas redes
irocho
0
370
Featured
See All Featured
Writing Fast Ruby
sferik
627
61k
Designing for humans not robots
tammielis
250
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Navigating Team Friction
lara
183
14k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
900
The World Runs on Bad Software
bkeepers
PRO
65
11k
Facilitating Awesome Meetings
lara
50
6.1k
Optimizing for Happiness
mojombo
376
70k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
Transcript
1 Pythonの概要とGoogle Colabの使い方 プログラミング基礎同演習 慶應義塾大学理工学部物理情報工学科 渡辺 2019/09/24
2 Pythonの文法やライブラリの使い方を覚える プログラムが組めるようになる 「プログラマ的な感覚」を身につける
3 タスクを見て実現コストを見積もれること タスク実現のための方法を知っていること 「このくらいのコードを書いたらこのくらいの ことができるはず」という感覚
4 タスク:卒論の実験で撮影したpng画像100枚を縦 横ともに半分にリサイズしたい もしWindowsの「ペイント」を使うと、一枚一枚開 いては「イメージのプロパティ」からサイズを指定 して保存しなおす必要がある。
5 タスク:卒論の実験で撮影したpng画像100枚を縦 横ともに半分にリサイズしたい Pythonによる解決例 import glob from PIL import Image
for file in glob.glob("*.png"): img = Image.open(file) (w, h) = img.size img.resize((w // 2, h // 2), Image.LANCZOS).save("resized/" + file) ImageMagickによる解決例 mogrify -path resized -resize 50% *.png
6 タスク:パラメータを変えながら作成したダイ オード特性のパラメータ依存性が知りたい 電圧 電流 順方向電圧Vf a = 0.1 a
= 0.2 a = 0.3 a = 0.4 a Vf O O
7 タスク:パラメータを変えながら作成したダイ オード特性のパラメータ依存性が知りたい ひとつひとつエクセルで開いて、マクロでフィッティングして、 それを別のシートにコピーして、最後にグラフを作成・・・ ・ 後からフィッティング関数を変えたくなったら? ・ データが増えたら? globでファイル一覧を取得、SciPyのcurve_fitでフィッティング
matplotlibでグラフ作成
8 タスクを見て実現コストを見積もれること タスク実現のための方法を知っていること PythonのSciPyライブラリや、curve_fitを知っている必要はない 「これはPythonなら数行でできるはず」と思えば 「Python フィッティング」でググるとすぐに出てくる 「プログラマ的な感覚」がなければ、そもそも検索しない
9 554889e5 897dfc89 75f88b55 fc8b45f8 01d05dc3 コンピュータがわかる形で指示を与えること コンピュータは機械語しか理解できない 人間にわかりやすい言語から機械語に翻訳する 機械語は数字の羅列
これをプログラミング言語と呼ぶ
10 int add(int a, int b){ return a+b; } 554889e5
897dfc89 75f88b55 fc8b45f8 01d05dc3 プログラミング言語 (人間がわかる) 機械語 (コンピュータがわかる) def add(a, b): return a + b インタプリタ (同時通訳) コンパイラ (翻訳) スクリプト言語 7c 7c 17 53 コンパイラ言語
11 実行方法 (翻訳の仕方) パラダイム (設計思想) ブロックの表現方法 (見た目) スクリプト言語:Python, Ruby, Perl,
JavaScript, ... コンパイル言語:C, C++, Fortran, Java, Rust, ... 手続き型、関数型、オブジェクト指向、... ※ 現代のプログラミング言語はほとんどがマルチパラダイム ※ 最近はこの二種類の区別は曖昧 中括弧型:C, C++, Perl, Java, JavaScript, Rust, ... キーワード型:BASIC, Ruby, シェルスクリプト, ... インデント型: Python, Haskell, F#, ...
12 プログラムは原則として上から順番に実行される from PIL import Image, ImageDraw white = (255,255,255)
red = (255,0,0) im = Image.new("RGB", (300, 200),white) draw = ImageDraw.Draw(im) draw.ellipse((90, 40, 210, 160), fill=red) im.show() 「日の丸」を描画するプログラム
13 プログラムは原則として上から順番に実行される from PIL import Image, ImageDraw white = (255,255,255)
red = (255,0,0) im = Image.new("RGB", (300, 200),white) draw = ImageDraw.Draw(im) draw.ellipse((90, 40, 210, 160), fill=red) im.show() ライブラリの読み込み 色の定義 イメージの作成 円の描画 イメージの表示 実行順序
14 aは正? 「Yes」と表示 「No」と表示 aが正かチェック 「Yes」と表示 「No」と表示 yes no プログラムでの表現
yes no プログラムを「かたまり」にわけて その「かたまり」に処理を飛ばす ブロック=プログラムのかたまり 実装したいロジック しかし、順番に実行したくない場合もある
15 if (a>0){ puts("Yes"); }else{ puts("No"); } if a >
0 then puts("Yes") else puts("No") end if a > 0: print("Yes") else: print("No") C言語 カッコで表現 Ruby キーワードで表現 Python インデントで表現 ブロックの表現方法はプログラミング言語により異なる aは正? 「Yes」と表示 「No」と表示 yes no
16 ライブラリやフレームワークが豊富だから ライブラリ よく使う便利な機能をまとめたもの 数学関数/ファイル操作/図のプロット等 フレームワーク 目的を達成するための枠組み 機械学習フレームワークTensorFlow/Chainer等 ウェブ開発フレームワーク Django等
Pythonには「あったらいいな」がある
17 エディタでプログラムを保存して実行 print("Hello Python!") test.py $ python test.py Hello Python!
IPythonという対話的シェルを使う $ ipython In [1]: print("Hello Python!") Hello Python! Jupyter Notebookでブラウザから実行する
18 Jupyter Notebookをクラウドで利用できる仕組み Googleのサーバ 1. ブラウザでプログラムを送信 2. サーバでプログラムを実行 3. 結果をブラウザに表示
19 「Google Colab」と検索して出てきたサイトにアクセスする https://colab.research.google.com/ URLに直接アクセスする
21 ログイン後、「ファイル」から「Python 3 の新しいノートブック」を選ぶ 「新機能をお試しください」というダイアログが出たら「今すぐ試す」をクリック
22 セル 再生ボタン ファイル名 セルにプログラムを入力し、再生ボタンもしくは「シフト+エンター」で実行できる
23 一番目のセルに「print("Hello World!")」と入力して実行せよ 再生ボタンを押した場合: そのセルが実行され、結果が表示される セル内でシフト+エンターを押した場合: そのセルが実行され、結果が表示される上に、カーソルが次のセルに移動する (次にセルがなければ作成される)
24 二番目のセルに「plint("Hello World!")」と入力して実行せよ 「`plint`という名前は知らない」というエラー 入力ミスなどでエラーが出た場合、エラーメッセージを見ながら修正すること
25 右上のメニューから、セルの移動や削除ができる マウスで範囲指定して、deleteキーで一度に消すこともできる
26 ここをクリックして修正することでファイル名を変更できる ファイルはGoogleドライブに保存される
27 課題2-1を実行し、画像を表示せよ。 Wordを起動し、レポートの体裁を整えてから「課題2」の 場所に表示された画像をドラッグ&ドロップで挿入せよ。 以下同様。
28 課題2-2を実行し、五芒星を表示せよ。 セルの内容は後から修正することができる 修正した内容は「実行」しないと更新されない
29 課題2-3を実行し、N芒星を表示せよ。 Nが偶数の時にうまくいかない理由はなぜか考察せよ 発展課題: 六芒星を描画せよ
30 第i世代 子供を作って死ぬ 第i+1世代 十分栄養を蓄えたら たくさん子供を作る 栄養がないと 子供も少ない 栄養がほとんどないと 子供を作ることができない
この振る舞いを数式で表現する
31 第i世代の個体数 第i+1世代の個体数 +1 = 1 − max 一匹が生む次世代の個体数 人口密度低
人口密度高 子供をたくさん生む 子供をほとんど産まない そのうち個体数が落ち着く?
32 = max 環境が許す最大値に対する個体数の割合 +1 = 1 − +1 =
= 定常状態なら = 1 − 1 だから 定常解 様々な の値に対して、 の振る舞いを調べよ