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
2.9k
3
Share
Pythonの概要とGoogle Colabの使い方 / Python 01
プログラミング基礎同演習01
kaityo256
PRO
September 24, 2019
More Decks by kaityo256
See All by kaityo256
勾配ブースティングと決定木の話 / gradient boosting and decision trees
kaityo256
PRO
5
1k
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
この講義について / 00-setup
kaityo256
PRO
2
330
GitHubによるWebアプリケーションのデプロイ / 07-github-deploy
kaityo256
PRO
1
250
演習:Gitの基本操作 / 04-git-basic
kaityo256
PRO
0
450
演習:Gitの応用操作 / 05-git-advanced
kaityo256
PRO
0
270
演習:GitHubの基本操作 / 06-github-basic
kaityo256
PRO
0
280
バージョン管理とは / 01-a-vcs
kaityo256
PRO
1
310
Gitの仕組みと用語 / 01-b-term
kaityo256
PRO
0
310
Other Decks in Education
See All in Education
Highest and Best Use: Development Considerations for Land Sites
rmccaic
0
230
Design Guidelines and Principles - Lecture 7 - Information Visualisation (4019538FNR)
signer
PRO
0
2.9k
Introduction - Lecture 1 - Advanced Topics in Big Data (4023256FNR)
signer
PRO
2
2.3k
高校数学とJulia言語
shimizudan
0
150
✅ レポート採点基準 / How Your Reports Are Assessed
yasslab
PRO
0
320
View Manipulation and Reduction - Lecture 9 - Information Visualisation (4019538FNR)
signer
PRO
1
2.6k
応募課題(’25広島)
forget1900
0
1.2k
Pen-based Interaction - Lecture 4 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
2.2k
Introduction - Lecture 1 - Information Visualisation (4019538FNR)
signer
PRO
0
5.4k
Data Representation - Lecture 3 - Information Visualisation (4019538FNR)
signer
PRO
1
2.9k
AI進化史:LLMからAIエージェントへ
mickey_kubo
0
130
Introduction - Lecture 1 - Next Generation User Interfaces (4018166FNR)
signer
PRO
2
4.6k
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Technical Leadership for Architectural Decision Making
baasie
3
330
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
How GitHub (no longer) Works
holman
316
150k
Test your architecture with Archunit
thirion
1
2.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
130
Designing for Timeless Needs
cassininazir
0
190
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
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 だから 定常解 様々な の値に対して、 の振る舞いを調べよ