Python 事始め2021年7月2日金曜日Python のプログラムの勉強を始める
コンピュータのソフトウェアやアプリはプログラムからできているのはご存知でしょう。ブログラムはプログラミング言語でできているときいたことはありませんか?。
小学校でもプログラミングの授業が始まったとか言います。
このような時勢に、python(ぱいそん)は育ち、小学校よりも高度な内容ですが、誰でも始めやすい敷居の低く新しい、そしてまだ開発育成成長中のプログラミング言語なんだそうです。世界中から力を合わせて開発しようという、素人や若者も参加のできるコンセプトだそうです。私は始めたばかりで、参加するような状況には至りませんし、力が到達しそうもありませんが考えを公開し磨き上げる仕組みがあるらしいのです。
まずは続くひとの足場、足がかりをつくり、足跡を自分がふりかえり思い出せるように、日記のような記事を書きます。pythonを最も節約した環境で使い始めるのです。
たとえばコンピュータはグーグルの提唱したクラウドとアプリを利用するクロームブックを利用します。
pythonの動く最適環境を目指し、試行錯誤を記録します。2重、3重に無駄なインストールから最適な環境に徐々に近づき到達を目指すのです。クロムブックの詳細情報はWEBにも本にも少ない状況なので役立つはずです。
Python 事始め2021年7月2日金曜日Python のプログラムの勉強を始める
内容 作業と失敗、対策を時系列で記入している
2021年7月3 Chromebook OS のアップデート成功。
一応バックアップデータ保存とChromebook の同期を行った
格安ChromebookでPythonプログラミング
TermuxでPython開発環境を構築しよう。すでに、連載59回目で詳しく説明しており、Chromebookでもほぼ同じ手順だ。そこで、ここでは簡単にポイントだけ紹介しよう。
左下の時計の部分の設定からデベロッパーを選択
「次へ」ボタンを押そう。すると設定の指定画面が出る。「username」に適当なユーザー名masabanを指定し、「インストール」ボタンをタップしよう。少し待っているとセットアップ chrom OSの強制バージョンアップでデータを失う危険がある。2021年7月3 Chromebook OS のアップデート成功。
一応バックアップデータ保存とChromebook の同期を行ったLinuxのコマンド入力によるインターフェイス(CUI)のターミナルが開く
ターミナルに
Python スタートブック21ページよりディレクトリの作成
mkdir pyworks #ディレクトリの作成
cd pyworks #ディレクトリを移動
cd .. #ディレクトリを上へ移動
pwdは現在、操作しているディレクトリを表示するLinuxコマンドだ。 現在いるディレクトリのことをカレントディレクトリというが、これを確認するときにpwdコマンドを使う。
>>>python3
でパイソンを開始する。おわりはquit()
すると、Python3の対話実行環境インタラクティブシェルが起動する。
quit()と書き込むとPythonの対話環境が終了する。
「****************************+++++++
別のアプリからLinuxの起動とパイソンの実行始まり
****************************+++++++
「(1) ChromebookのPlayストアでTermuxをインストール後アンインストール済み
(2)Pythonをインストールするため以下のコマンドを実行する
$ pkg update
$ pkg install -y pythonインストールに時間が暫く掛かる
「python3」と入力してエンターキーを押してみよう。すると、Python3の対話実行環境インタラクティブシェルが起動が起動する。
インタラクティブシェルの中ではカーソルで選択した文字はコピーされる。
貼り付けにはctrl+⬆+V
quit()と書き込むとPythonの対話環境が終了する。」
cd..すると home usr
cd homeは可能
cd usrはできない。
homeでdirするとコマンドのインストロールファイルが羅列される。
フォルダより.pyファイルを探せない迷子なのでコンピュータからアンインストールする。
https://blog.goo.ne.jp/oprsfr3saku/e/f7f4b542a32e658bd0951269c11f96ca
◼️おまけ:Termuxでなら、タダでPythonできなくもない
Termuxを導入した人向け。
事前に apt update
apt upgrade
を行ってから…
Termux上のNanoエディタは、他のAndroidのエディタアプリからのコピペに対応はしていますので、たとえばJota+やQuickText、MoonWriter等でコードを書いて実行するのが楽ですよ。
ファイルの保存はCtrlボタンを押した後xを選ぶのが基本のようです。
実行は、
python {実行対象ファイル名}.pyで。
PIP周りの参考情報は、英語ですが、
https://wiki.termux.com/wiki/Python
****************************+++++++
****************************+++++++
別のアプリtermuxからLinuxの起動とパイソンの実行終わり
****************************+++++++」
Pythonスタートブック[増補改訂版] » サポートページ
サンプルデータは,ZIPファイル形式でダウンロードできます。Windows用とmacOS用のうち,ご利用のOSに合ったデータをダウンロードして,適宜解凍してご利用ください。なお,解凍したファイルを実行するには,本書の1章で作成する「pyworks」フォルダにコピーしてください。マイクロSDカード2TB(赤色)の中に2021年7月2日金曜日に保存した。
以降はLinuxのターミナルモードで学習する。
ランダムモジュールをインストール
>>>import random
random.choice([1,2,3,4,5])
作業用のディレクトリ作る21ページ
mkdir pyworks
mkdir pyworks
Chromebook のローカルフォルダーの中のLINAX の下にpyworwksというフォルダを作り技術評論社のファイルjanken.pyをコピペする。翌日パイワークスというフォルダがフォルダアプリに見えなくなった。フォルダアプリにpyworksを検索したら,
Linuxフォルダとplay ファイルホルダの間にあらわれた。
LINAxのターミナルモードで
cd pyworks
python3 janaken.py
スクリプトファイル(ソースコード)が実行される。翌日もLinuxのターミナルモードからpython3 janaken.pyを実行してじゃんけんの動作を確認できた。
CaretModアプリでjanken.pyは見えないまま7/5にwords_sort.pyを保存した。
フォルダアプリではマイファイル>ダウンロードにwords_sort.pyが保存できたので、
プルダウンでマイファイル>Linuxファイル>pyworks
までwords_sort.pyをコピペした。
python3 words_sort.py orange apple grape lemonの実行を確認できた。
CaretModアプリでマイファイル>Linuxファイル>pyworks
のフォルダにwords_sort.pyをじかに保存できると確認した。
Pydroid3アプリで/storage/emulated/0/Download/pywork for py3/
のフォルダに空のnewfile.pyをじかに保存できると確認した。
直前の利用が、他のアプリでも同じパスのならLast opendから画面上部のselect folder して、画面下部のファイル名を直して保存する。
同じパスがフォルダアプリのパス表示ではマイファイル>ダウンロードにnewfile.pyが保存できているとみつけたので、
プルダウンでマイファイル>Linuxファイル>pyworks
までnewfile.pyをコピペした。
Pydroid3アプリで画面右上三メニューボタンをクリックし正規のパスを入力したいができない。
データ型
りすと =()
辞書 ={}
たぷる =set()
「****************************+++++++
別のアプリpydroid3から2011年7月アプリストアからダウンロード
****************************+++++++
Pydroid3を使用してAndroidにPythonをインストールしてコーディングする方法
pydroid3のフォルダ
- カレントディレクトリ取得
- ファイルの絶対パス取得
- ファイルのあるディレクトリの絶対パス
- ファイルの絶対パスからベースネーム(最後の/以降のtail部分)を取り出す
- カレントディレクトリの移動
- カレントディレクトリを上の階層に移動
- カレントディレクトリを移動
- カレントディレクトリのファイルやフォルダ名を取得(リスト型)
- ファイルの判別。
- フォルダの判別
- ディレクトリの作成
- ファイルの検索
下記のパスにimport sysを内容とした1行だけのファイル
testsave.pyをセーブした。
/data/user/0/ru.iiec.pydroid3/files/testsave.py
/data/user/0/ru.iiec.pydroid3/files/のパスには
newfile.pyという0バイトのファイルも保存されているはず。
****************************+++++++
****************************+++++++
別のアプリpydroid3
****************************+++++++」
- https://note.nkmk.me/python-os-getcwd-chdir/
- カレントディレクトリを取得・確認: os.getcwd()
- カレントディレクトリを変更(移動): os.chdir()
なお、実行しているスクリプトファイル(.py)のパスは__file__で取得できる。以下の記事を参照。
https://chayarokurokuro.hatenablog.com/entry/2021/01/17/234715
Pythonではこんな感じで
import os
print(os.getcwd())
としたら
/storage/emulated/0
と答えがあった。
/storage/emulated/0/Download/pywork for py3/testsave.py
https://ahiru8usagi.hatenablog.com/entry/Chromebook_Android_Storage
Chromebookのデフォルトで入っているファイルマネージャーにはAndroidアプリで保存したファイルパスが表示されない
Androidのストレージを確認する手順
まずは画面右下の『通知領域をクリック』して、『設定』を開きます。
「Androidの『設定』を管理する。」をクリックします。
Androidの設定画面が開いたら『ストレージ』をクリック。
『外部メディア』をクリック。
ここでAndroidの内部ストレージを確認することができます。
『Download』はChromebookのローカルストレージを同じファイルが入っています。
画像加工アプリなどでファイルを保存した場合、アプリ名のフォルダができており、そこに編集後のファイルが入っていたりします。
アプリの設定でファイルの自動保存先を変更しておくと便利ですが、先に編集して保存してしまった場合はここから探すと見つかるでしょう。
https://blog.itokoichi.com/entry/2020/08/29/180000
Chromebookでは、ローカルのファイル管理に制限があり、Androidアプリの中にはダウンロードフォルダしか参照できないものもあるようです。
そのため、Chromebookではローカルのファイルの保存先を常にダウンロードに保存することで、アプリで使いやすくなります。
pydroid3のterminal は画面左上の三メニューをクリック
terminalをクリック
CUIからファイル一覧を作る lsコマンドは「list segments」の略で、ファイルやディレクトリの情報を表示するコマンドだ。 とても古いコマンドでLinuxの前身ともいえるUnixの一番初めのバージョンから搭載されていた。
ls↩
チェンジディレクトリ cd Dowunload
ls
python word_sort.py orange apple grape lemonを実行 技術評論社 スタートブック21ページ
実行成功
Python の開発環境にはAndroid アプリのパイドロイド3をAndroid の中に置き、開発ファイルをChromebook のダウンロードに保存する
パイドロイド3のPython の実行はChromebook のダウンロードで行う。
Linux のバイソン実行ファイルからはハードドライブ上のファイルの管理を行う
Android のフォルダーの中のファイルはAndroid アプリのAndroid 3のターミナルで管理を行う
Chromebook のクラウドのGoogle ドライブの中にあるファイルは一旦ダウンロードに保存して出して、その後ダウンロードからLinux の Python 実行ファイルを使って外部メディアに保存する
ダウンロードではpywork for py3フォルダにファイルを保存する。
パイドロイド3ではダウンロードにファイルを保存する。
lINuX のパイソンはダウンロード>linux>pyworksのフォルダにpyファイルを保存する。
Android アプリpydroid3のターミナルモードで
cd Download
マイファイル>ダウンロードにwords_sort.pyファイルのある時
words_sort.pyを次のコマンドをlinuxのターミナルのコマンドに与えて実行
python words_sort.py orange apple grape lemon
文字の並べ替えが確認できた。
Python スタートブック目次
Python のインストール
インタラクティブシェル
メソッド
デート TIME モジュール デート TIME.デート(2030,4,14)
ある方の実際のデータを作るにはその形と同じ名前のメソッドを呼び出せば初期化メソッドになる
作成されたメソッドの実態のことをデータ型のことをインスタンスとインスタンスと呼びます
import datetime
today=datetime.date.today()
birthday=datetime.date(1975,8,3)
life =today-birthday
print(life.days)
デート TIME . jp 型のようなデータ型は組み込みデータ型を材料に作ることができます。この時最初に呼び出すメソッドは初期化メソッドという特殊なメソッドです。あるかと思ったデータの実態をインスタンスと呼びます。見ている方をまとめたものがモジュールです日付を表すデート方屋時刻を表すタイム方はデート time モジュールにまとまっていますメソッドはその動作の違いから大きく3種類に分けられますデータとメソッドが一緒にまとまっている美味しそうなので見たことはオブジェクトに相当します
リスト型辞書型
リストはデータを順番に並べて管理します格納されているデータには0から始まる番号でアクセスします辞書型はデータに名前気をつけて管理します格納されているデータには気を使ってアクセスアクセスしますタプルは変更できないリストですまたセットは順番などの概念がない単純なデータの集まりですsysモジュールのargv という変数を利用するとコマンドラインから文字列を受け取ることができます
for 文 if 文while 文
for if while といったキーワードで始まる行は必ず:で終わり次の行は行頭で tab キーを使ってインデントしますリストを for 文で処理する文for v in sample_list:では、変数vでリストに保存されている要素を順番に参照できます辞書を for 文で処理する時for v in sample_ dictionary の変数v
にはキーを参照しますif 文で条件が成立しなかった時の処理を追加するには ifの後にelseで新しいブロックを作りますヘルスは残りを言ってに引き受けるとき,elifはさらに条件で絞り込む時に使いますFly while 文や for 文の途中で繰り返し処理を終了しブロックを抜け出したい時はキーワードブレイクを使い次の繰り返し処理をスキップしたい時は Continue を使いますどちらのキーワードも繰り返し処理のブロックの中で if 文とセットで使われます
エラー
Try except 文を使うとエラーが生じたときに実行する処理を書くことができます
ファイルの読み書き
ファイルを読み書きをするには組み込み関数 open を使いますopen 関数の一つ目の引数は操作するファイル名二つ目の引数は読み込みの場合は R 書き込みの場合は W ですファイルへの書き込みは write メソッドファイルからの読み込みにはリードラインメソッドを使います改行はバックスラッシュ Nタブはバックスラッシュ T で表現しますファイルの複数行を読み込んだり書き込んだりする時はfor文を使うと便利ですwith 文を使ってファイルを操作するコードをまとめるとクローズの処理を Python に任せられますファイルを読み書きする関数オープンはファイル名の他にモードを引数として取ります読み込みの時はr書き込みの時は W ですopen 関数を使って開いたファイルは最後にクローズメソッドを使って閉じる必要があります
パイソン で絵を描くタートルモジュール
タートル型オブジェクトの動きをfor if while と言った条件分岐と繰り返しの部分で制御すると様々な形の図形を描くことができますフォワードレフトホームクリア
>>>for i intsnhr(6)
kame.forward(200)
kame.left(60)
モジュールを作る
def fuc(v):
i=v+3
return i
モジュールを作るのはとても簡単です Python のスクリプトファイルそのものだからですファイル名お前モジュールドットバイとして保存する場所はいつもの作業ディレクトリワークスにしますimport 文でモジュールのファイル名を呼び出します
モジュールの変更と更新
def func(V):
i=V*3
return i
テキストエディタで変更した場合にはどのように Python に知らせればよいでしょうか一度読み込んだモジュールを読み込み直すにはimp モジュールを使います
モジュールの普通の読み方randomを例に
import random
random.randint(1,10)
モジュール名を省略した形で使う読み込み方
from random inport *
randint(1,10)
*によりモジュールの名前をつけずに関数を使うことができる
モジュールを読む他の方法
import random as r
r,randint(1,10)
random モジュールを変えるという一文字の名前のモジュールとして読み込んだ事例
My モジュール. py をインタラクティブシェルから読み込んで利用しました。ファイルの実体はインタラクティブシェルを実行したカレントディレクトリにありました。Python に初めから用意されているモジュールファイルはどこにあるのでしょうか。
環境変数PYTHONPATHで指定されたディレクトリの中を探します
C:\users\taro\Appdata\local\Programs\Python\Python36\LIb
def center_circle(target):
target.penup()
target.forward(200)
target.left(90)
target.pendown()
target.circle(200)
target.left(90)
target.penup()
target.forward(200)
target.pendown()
kame_tools.py でセーブする。
打ったばかりならimport しなくても
kame.home()
kame.clear()
center_circle(kame)
で円を描ける。
モジュールを起動中にimportまたはdefすることでモジュールとして使える。
同じ名前の変数は関数の家と外では別物です混乱を避けるため変数の中で使う変数は引数で受け取るか関数の中で定義したものだけにしましょう
デフォルト 引数にデフォルトにしたい変数を書き加え、たとえば亀の例では引数に変更を(target,r=150)のようにしてデフォルトのR=150を記入しモジュールの中の引数200の文字部分をrに置き換える=で指定された値は引数に値が与えられなかった時にデフォルト値として利用されます
Map 関数map(str,[1,2,3])リストのすべての要素に関数を適用
m=map(str,[1,2,3])
type(m) → class ‘map’
list(m)
同じ内容
list(map(str, [1,2,3])
データと関数メソッドをひとまとめにオブジェクトとして扱うオブジェクト指向
関数型言語は関数を数値や文字列と同じように扱う考え方
関数を定義するには defキーワードを使います
関数プランデータを戻すにはreturnキーワードを使います
関数にデータを持たすには引数を使います
関数のデフォルト値を指定できます=
関数の中で使う変数は引数で指定するか関数の中だけで定義します
関数もオブジェクトです普通のデータと同じように扱えます
新しいでデータ型を作る
新しいデータ型を作成するにはclassというキーワードを使います
class Dice:
pass
import random
class Dice:
face_num=6
def shoot(self):
retrun random.randint(1,6)
sai=Dice()
sai.shoot
230ページ
import random
class Dice:
face_num=6
def shoot(self):
retrun random.randint(1,self.face_num)
classを使って新しいデータ型を作るとパイソンが引数のない初期化メソッドを自動的に用意してくれます
自動でない時は
__init___
というメソッドで行う
233ページ
import random
class Dice:
face_num=6
def__init__ shoot(self):#初期化メソッドの呼び出し他のメソッドと同様にSelf が必要
print(‘Hello!!’)#呼び出されたら挨拶メッセージを表示
def shoot(self):
retrun random.randint(1,self.face_num)
236ページ 赤文字は237ページのdice.pyファイルの内容
緑文字は238ページ
import random
class Dice:
def__init__(self,val=6):
if val not in [4,6,8,12,20]:
raise Exception(‘そんな正多面体はありません’)
self,face_num=val
def shoot(self):
retrun random.randint(1,self.face_num)
上記コードの実行
imp(dice)
sai=dice.Dice(4)
sai.shoot()
表記フォーマットの例print(‘cpu:{}/あなた*{}’,format(cpu_pip,my_pip))
同一の値 よくわからない242ページ
同じ名前の変数がインスタンスごとに別の attribute を持つことができる
すべてのインスタンスにわたって同じ内容で良い場合は CLASS 属性を使う
インスタンスごとに内容を変えたいときはインスタンス属性を使う
クラスが上位でインスタンスは詳細
継承
class Kame(turtle,Turtle):
pass
継承もとになった親の初期化を呼びこむ
super().__init__()
データ型は Data 属性とメソッドからできています新しいデータ型を作るには設計図となるクラスを作りますクラスはデータ属性アトリビュートとメソッドをまとめますメソッドは関数と同じようにdefキーワードを使ってクラスに追加しますメソッドには一つ目の引数として必ずselfが必要です初期化メソッドの実態は__init__という名前のメソッドです軽症は既存のクラスを元にして新しいクラスを作る方法です小グラスでクラスと同じ名前のメソッドを定義すると親クラスのメソッドは上書きされます子クラスの中で親クラスへの参照が必要な時は組み込み関数superを使います
CGIで動的な Web
サーバーにデータを送る
データベースを利用する
ヒストグラムを描く
文字コードと日本語
関数と変数のコードの話
リスト辞書セットタプルの実践テクニック
コンピューター 歴史とPython
外部ライブラリの追加方法
http://note.kurodigi.com/post-0-15/
インストール方法は主に5種類
Linuxにおけるソフトのインストールは以下5種類と考えておけばだいたいOK(だと思う)。使用頻度が高い順に並べて置きました。
Cura 2.7は ppa:thopiekar/cura からインストールできます。
Sudo add-apt-repository ppa:thopiekar/cura
Sudo apt-get update
Sudo apt-get install cura
Curaの新しいバージョンが必要な場合は、 ppa:thopiekar/cura-master を使用できます。
Sudo add-apt-repository ppa:thopiekar/cura-master
Sudo apt-get update
Sudo apt-get install cura
http://pineplanter.moo.jp/non-it-salaryman/2019/06/12/jupyter-chromebook/
ChromebookにJupyter notebookをインストールする方法と使い方
ChromebookへJupyterをインストール
Linuxアプリのターミナルを起動し、以下のコマンドを打ちます。あらかじめpipをインストールしていることが前提です。pipのインストール方法はこちらを参照ください。
$ sudo apt-get install python3-pip
sudo pip3 install numpy
1 2 |
$ sudo pip3 install jupyter |
Jupyter notebookを使ってみる
右上の「New」ボタンを押すとプルダウンメニューが現れるので「Python 3」を選択します。
ノートブックが開きました。セルにPythonコードを書いて実行できます。
import numpy as np
arr = np.zeros(10)
print (arr)
runボタン
matplotlibが使えるか?
果たしてmatplotlibは使えるのか?まずはpipコマンドでmatplotlibをインストールしてみます。(頭に!を付けるとコマンド実行できます)
1 2 |
!pip3 install matplotlib |
import matplotlib.pyplot as plt
price = [32, 38, 49, 67, 81]
number = [1, 2, 3, 4, 5]
plt.plot(price, number)
plt.title("Graph Test")
plt.xlabel("value-1")
plt.ylabel("value-2")
plt.show()
失敗した
Jupiternotebookのmatplotlibが動かない
(
まず
import sys
sys.version
と、入力してカーネルのバージョンを確認してみてください。
maptplotlib をインストールしているバージョンと同じかどうか。
さらに
sys.path
として、モジュール検索パスに matplotlib がインストールされているフォルダーが含まれているかどうか確認してみてください。
)
Jupyter Notebook を使ってみよう
Matplotlib で出力したグラフをノートブック内に表示させることも可能です。先頭に、%matplotlib inline という行を記載する必要があります。2度めはいらなかった
%matplotlib inline
import matplotlib.pyplot as plt
price = [32, 38, 49, 67, 81]
number = [1, 2, 3, 4, 5]
plt.plot(price, number)
plt.title("Graph Test")
plt.xlabel("value-1")
plt.ylabel("value-2")
plt.show()
グラフ描画成功
(Jupiterが動作しない。tokenが求められる。
8436e3142c6965808ed52790f106df0f1a920785b2a8f688
インストールが完了したら以下のコマンドでJupyter notebookを起動します。
1 2 |
$ jupyter notebook 毎回トークンがつくられるらしい token=26c5273959a94dad844a942c2ad2d404f3dfebbecb9dc0ad ) ))( |
Linux で
$ jupyter notebook
Jupiternotebookのpythonプログラムの保存用フォルダ
/IDE jupyter
linux直下の階層 (同じ階層にCura)
Jupiternotebookを名前短縮でJupiternotebookで行ったをインターネットの記事を参考にした.jpynbファイルを保存した。
アイコンや名前のクリックで起動する。秀和システムのテストもこのホルダーに入れる。ホルダ階層はLinuxがルートで、カレントディレクトリ(ホルダ)になっている。
アイコンをクリックするとノートブックが開く
フォルダーのアイコンをクリックするとフォルダの中に入る
右やや上のnewぼたんでpythonを選択するとプログラム開発用環境が始まる。
ジュピターノートブックのノートブックにセルにパイソンのコードを書いてランボタンで実行する
ランボタンはシフト+enterと同じ
終わる時はファイルボタンを押しファイルメニューのセーブアンドチェックポイントを選択したあと、もう一度ファイルメニューのクローズアンドハルトを選択する。これをしないと実行中生ホルト状態になってしまう。必ずクローズアンドハルトすること、
セルの追加と削除がセレモニーからできる
プログラムを実行してメモリに読み込むれたデータをリセットすることをカーネルメニューのリスタートでできる
リスタート、実行の全ての消去 リスタート&クリアアウトプット
Jupyter Notebook の基本的な使い方
Jupyter Notebook を起動後、ノートブックを作成したいフォルダ階層で、「New」ボタン ⇒「Python3」を選択し、ノートブックを作成します。
以下のように、セルと呼ばれるスペースに Python のコードを入力し実行することができます。実行、編集は次のようにして行うことができます。
- Ctrl + Enter: セル内のプログラムを実行
- Shift + Enter: 下にセルを追加
- セルをダブルクリック: セルを再度編集可能にする
Pandas のデータフレームは、テーブルとして出力できます。
Matplotlib で出力したグラフをノートブック内に表示させることも可能です。先頭に、%matplotlib inline という行を記載する必要があります。
https://www.yutaka-note.com/entry/matplotlib_inline
%matplotlib inlineには、どんな意味があるのでしょうか?
今回は、%matplotlib inlineの謎について解説していきます。
jupyter Notebookでmatplotlibを使用する場合には、インポートする前に
- %matplotlib inline
と記述しますよね?では…
- なぜinlineと入力しているのでしょうか?
- 入力し忘れても動くことがあるのはなぜでしょうか?
- %matplotlib notebookというコマンドもあるのをご存じでしょうか?
matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
upyter Notebookでmatplotlibを使用する場合には、インポートする前に
- %matplotlib inline
と記述しますよね?では…
- なぜinlineと入力しているのでしょうか?
- 入力し忘れても動くことがあるのはなぜでしょうか?
- %matplotlib notebookというコマンドもあるのをご存じでしょうか?
この記事では、matplotlib inlineの謎について解説していきたいと思います!
Jupyte Notebookのmatplotlibの読み込み|%matplotlib inline
Jupyter Notebookでmatplotlibを使用する場合、次のように読み込むことが多いと思います。
%matplotlib inline
import matplotlib.pyplot as plt
%matplotlib inlineを指定してから、matplotlib.pyplotをインポートしています。
(pyplotモジュールについて詳しく知りたい方は、まず次の記事をご覧ください)
このとき%matplotlib inlineには、どんな意味があるのでしょうか?
今回は、%matplotlib inlineの謎について解説していきます。
%matplotlib inlineを指定したときの挙動
%matplotlib inlineを指定したときの挙動:
- グラフがアウトプット行に出力される
- plt.show()を省略してもグラフが出力される
- plt.show()でアウトプット行に2つ以上のグラフ表示可能
グラフがアウトプット行に出力される
%matplotlib inlineを実行してプロットを作成すると、アウトプット行に図が出力されます。
アウトプット行内(in line)にグラフが出力されるので、まさにinlineです。
Jupyter Notebookでは、アウトプットを確認しながらスクリプトを書くことが多いので、
- いちいちポップアップが出ない
- アウトプット行にグラフを表示できる
というのはとても便利です。
plt.show()を省略してもグラフが出力される
対話側実行環境やエディタでは、グラフの表示のためにplt.show()を実行する必要があります。
一方、%matplotlib inlineを使用したnotebook環境ではplt.show()を省略してもグラフが出力されます。
plt.show()の書き忘れはよくあるので、とても便利な機能だと思います。
一点注意したいのが、plt.show()を省略するとアウトプット行にオブジェクトの場所が出力されます。
もし、これを表示させたくない場合はplt.show()を省略せずに記述しましょう
plt.show()でアウトプット行に2つのグラフ表示
インプット行にplt.show()が記述されていると、その段階でグラフが出力されます。
これを利用すると、スクリプトをplt.show()で区切ることで2つ以上のグラフを1つのアウトプット行に表示できます。
x = np.linspace(0, 2*np.pi)
# 1つ目のグラフを描く
plt.plot(x, np.sin(x))
plt.show() # ここで1つ目のグラフ出力
# 2つ目のグラフを描く
plt.plot(x, np.cos(x))
plt.show() # ここで2つ目のグラフ出力
クイックに結果を確認する場合には手軽で良い方法だと思います。
とはいっても、これはあくまで異なる2つの図を出力しているだけです。
2つ以上のグラフを作成して、配置やタイトルなども調整したい場合はsubplotを使用しましょう。
【PR】Matplotlib関連の書籍はこちら
%matplotlib inlineの意味 =「バックエンドの指定」
%matplotlib inlineはmatplotlibのバックエンドをinlineに設定するという意味です。
matplotlibのバックエンドについて解説していきます。
バックエンドとは?
バックエンドとは、グラフを出力するためのmatplotlibの内部処理です。
通常、ユーザーはフロントエンドと呼ばれるスクリプト部分を記述しています。
- フロントエンド:ユーザーが記述するスクリプト
- バックエンド:matplotlib内の処理、グラフの出力形式に応じて処理する
matplotlibではバックエンドの種類を変更することによって、グラフの出力形式を
などに変更することができます。
他にもたくさんのバックエンドが存在します。
%matplotlib inlineは、バックエンドをアウトプット行出力用に設定するという意味です。
バックエンドの確認方法
バックエンドを確認したい場合には
- matplotlib.get_backend()
を実行します。
%matplotlib inline
import matplotlib
matplotlib.get_backend()
# 'module://ipykernel.pylab.backend_inline'
たしかにinlineになっているようですね。
%matplotlib inlineは必要ない?
%matplotlib inlineを入力し忘れても、アウトプット行にグラフが表示された経験がある方もいるかと思います。
なぜでしょうか?
実は、notebook使用時のデフォルトのバックエンドはinlineになっているという情報があります。
そのため、比較的新しいバージョンのmatplotlibを使用していれば、%matplotlib inlineは必要がないようです。
ただ、具体的な情報ソースが見つからないので、とりあえずinlineは書いておいた方が良さそうです。
%matplotlib notebook|インタラクティブモード
このバックエンドでは、図をインタラクティブモードで出力します。
インタラクティブモードには:
- 図の領域の大きさ変更
- 図の平行移動、拡大・縮小
- アニメーション出力時に使用
することができるという特徴があります。
インタラクティブモードの出力例を紹介します。
%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
plt.plot(x, y)
plt.show()
次のようなインタラクティブモードでグラフが出力されます。
各ボタンは次のような機能を持っています。
インタラクティブモードは便利な反面デメリットがあります。
- 終了ボタンを押さないと別のセルのグラフまで同じグラフに出力されてしまう
という点です。
複数のインプット行でグラフを出力する場合、いちいち終了ボタンを手で押す必要があるので不便ですね。
複数のインプット行でグラフを出力する場合はinlineの方が便利です。
おわりに:matplotlib関連記事の紹介
今回は、matplotlibインポート時に指定する%matplotlib inlineの謎について解説しました。
もっとMatplotlibを自由自在に操作したい!という方へのおススメコンテンツはこちらです!
≫Matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
Jupyter Notebookでmatplotlibを使用する場合には、インポートする前に%matplotlib inlineと記述します。なぜinlineと入力しているのでしょうか?この記事では、matplotlib inlineの謎について解説していきたいと思います!
www.yutaka-note.com/entry/matplotlib_inline
各種テキストを Markdown 形式でメモとして残すことが可能です。
Jupyter Notebook の便利な使い方
Jupyter Notebook には、たくさんの便利な機能が用意されています。
エクスポート機能
Jupyter のノートブックは .ipynb 形式のファイルとして保存し、他の PC で開くこともできますが、Jupyter を利用していない方には PDF や HTML 形式でエクスポートして共有することが可能です。また、Python のソースコード部分のみを実行可能な .py ファイルとして出力することもできます。
ショートカットキー
キーボードのアイコンを押すと、ショートカットキーの一覧が表示されます。
上記で紹介した以外にも、分析作業を効率的に進めるための便利な機能がいくつか用意されています。ぜひ、Jupyter Notebook を使いこなして再利用性の高い成果物を作成し、業務や研究に役立てましょう。
コマンドを入力して、LinuxにインストールされているPython3のバージョンを確認します。
- python3 –version
masaban@penguin:~/pyworks$ python3 - version
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
Type "help", "copyright", "credits" or "license" for more information.
>>>
https://tech-camp.in/note/pickup/101453/
ChromebookでPythonの開発環境を構築する5つの手順
- 3.1 ①Linuxをセットアップ
- 3.2 ②Pythonのバージョンを確認
- 3.3 ③VSCodeをインストール
- 3.4 ④VSCodeを日本語化
- 3.5 ⑤VSCodeを日本語入力できるように設定
Linuxを起動するときは、ランチャーの「Linuxアプリ」フォルダーからアプリを起動できます。
③VSCodeをインストール
エディタの「Visual Studio Code(VSCode)」をLinuxのフォルダにインストールします。
ダウンロードファイルをファイルの開くメニューからLinuxでインスト−のメニューを選択します。
ウィザードの案内に選択事項を選び画面下側のnextボタンを押してインストールが進みます。
インストールが完了したようなら、アプリのなかにVScodeのアプリがあるか探してみましょう。ファイルのフォルダには探してもみえません。「Linuxアプリ」にVSCodeが合体されたアプリフォルダーが追加されます。
④VSCodeを日本語化
VSCodeのメニューを日本語化できます。
画面の左側にある拡張機能アイコン(小さな四角が4つのアイコン)を選択し、検索窓に「Japanese」と入力する。検索結果の中に「Japanese Language Pack for Visual Studio Code」というパッケージが表示されたらパッケージそれぞれに青く小さく表示された「Install」を選択してインストールする。
画面右下のウィザードにchange langage and restartの青い色のボタンが表れたらクリックしてVSCodeを再起動するとメニューが日本語に変更されます。
Linuxを起動し
sudo apt-get install fcitx-mozc -y
とコマンド死実行すると「fcitx-mozc」のインストールが始まり数分続きます。
インストール後、「Linuxアプリ」fcitxのペンギンの姿のイコンがアプリフォルダーに合体しています。
ペンギンの絵のアプリfcitxを起動します。
起動を待ったが起動できない。7月8日土曜
fcitxが起動したら、コマンド
fcitx-configtool
を入力すると、「Fcitx」の設定が開くので、以下の手順で日本語入力を追加してください。
- 「Keyboard – English(US)」を選択した状態で「-」を押し、英語入力を削除
- 「+」を押して「Mozc」を選択し、「Only Show Current Language」のチェックを外した状態で「OK」を押す
- VSCodeを再起動する
最後に、パソコン再起動後も日本語入力を維持するために、Linuxから以下のコマンドを実行します。
- echo “fcitx > /dev/null 2>&1” >> ~/.profile
これにて、VSCodeの日本語入力設定は完了です。