Python入門トップページ


目次

  1. プログラミング言語
  2. Anaconda - Jupyter Notebook / JupyterLab の環境設定
  3. Python の基礎
  4. リスト,タプル,辞書,集合
  5. 再び Jupyter Notebook の操作
  6. Python の制御構文
  7. 関数
  8. 便利な関数など
  9. リストの内包表記
  10. 多次元リスト
  11. クラス
  12. 演習問題
  13. 雑多な情報

Python の基礎

雑多な情報

シェルコマンドとマジックコマンド

シェルコマンドは Windows のコマンドプロンプトや Mac, Linux のターミナルで利用できるコマンドです.シェルコマンドは Jupyter Notebook 内で実行できますが,OS ごとに利用できるシェルコマンドが異なるので注意が必要です.一方で,マジックコマンドも Jupyter Notebook 内で実行できるコマンドですが,IPython (Jupyter Notebook) のカーネルによって提供されるので,OS が異なってもマジックコマンドは同じです(ただし,オプショナル引数の設定方法などが異なる場合があります).

目次に戻る

Windows のシェルコマンド

Windows でシェルコマンドを実行するには先頭に ! を入力して,その後にコマンドプロンプトで利用できるコマンドを入力します.実行時はやはり Shift + Enter を押します.例えばカレントディレクトリ(フォルダ)にあるフォルダとファイル一覧を表示する dir コマンドを Juypter Notebook 内で実行することができます.


!dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 9018-19A1 です

 C:\Users\Rinsaka\Documents\Python\magic のディレクトリ

2022/01/31  14:43    <DIR>          .
2022/01/31  14:43    <DIR>          ..
2022/01/31  14:30    <DIR>          .ipynb_checkpoints
2022/01/31  14:29            36,279 magicコマンド.ipynb
2022/01/31  14:29                30 shell.py
               2 個のファイル              36,309 バイト
               3 個のディレクトリ  47,552,335,872 バイトの空き領域

Windows 利用時には Windows のコマンドが利用できるので,Mac のコマンド ls は実行できません.


!ls
'ls' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

1行の Python ファイルを同じフォルダに準備したあと,ファイルの中身を確認します.


!type shell.py
print("Hello, shell command!")

コマンドプロンプトで Python プログラムを実行する方法を使って,Jupyter Notebook 内で Python の外部コードを実行します.


!python shell.py
Hello, shell command!

ファイルをコピーしてみます.


!copy shell.py shell-2.py
        1 個のファイルをコピーしました。

ファイルがコピーされたことを確認します.


!dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 9018-19A1 です

 C:\Users\Rinsaka\Documents\Python\magic のディレクトリ

2022/01/31  14:43    <DIR>          .
2022/01/31  14:43    <DIR>          ..
2022/01/31  14:30    <DIR>          .ipynb_checkpoints
2022/01/31  14:29            36,279 magicコマンド.ipynb
2022/01/31  14:32                30 shell-2.py
2022/01/31  14:29                30 shell.py
               3 個のファイル              36,339 バイト
               3 個のディレクトリ  47,552,270,336 バイトの空き領域

目次に戻る

Mac, Linux のシェルコマンド

Mac でシェルコマンドを実行するときも Windows と同様に先頭に ! を入力して,その後にターミナルで利用できるコマンドを入力します.実行時はやはり shift + return を押します.例えばカレントディレクトリ(フォルダ)にあるフォルダとファイルの一覧を表示する ls コマンドを Juypter Notebook 内で実行することができます.


!ls
magicコマンド.ipynb     shell.py

Mac 利用時には Mac のコマンドが利用できるので,Windows のコマンド dir は実行できません.


!dir
zsh:1: command not found: dir

1行の Python ファイルを同じフォルダに準備したあと,ファイルの中身を確認します.


!cat shell.py
print("Hello, shell command!")

ターミナルで Python プログラムを実行する方法を使って,Jupyter Notebook 内で Python の外部コードを実行します.


!python shell.py
Hello, shell command!

ファイルをコピーしてみます.


!cp shell.py shell-2.py

ファイルがコピーされたことを確認します.


!ls
magicコマンド.ipynb     shell-2.py              shell.py

目次に戻る

マジックコマンド

マジックコマンドは Jupyter Notebook 内で利用可能なコマンドです.マジックコマンドを利用するには先頭に %,または %% を入力します.マジックコマンドでは例えばプログラムの実行時間を計測することができます.なお,先頭に %time を入力するとラインマジック(行マジック)コマンドとなり,その行の実行時間を計測します.


%time sum(range(100000000))
CPU times: user 6 µs, sys: 30 µs, total: 36 µs
Wall time: 13.8 µs
4999999950000000

先頭に %%time を入力するとセルマジックコマンドとなり,そのセル全体の実行時間を計測します.まずは,math ライブラリをインポートしておきます.


import math

セル全体の実行時間を計測してみます.


%%time
n = 10000000
y = [0] * n
for i in range(0, n):
    y[i] = math.sqrt(i)
CPU times: user 1.44 s, sys: 89.7 ms, total: 1.53 s
Wall time: 1.56 s

次の場合は先頭行 n = 10000000 の実行時間を計測しているため,繰り返し処理の計算時間を計測できておらず,上の結果と比較すると計測された計算時間が数十万分の一程度になっていることに注意してください.


%time n = 10000000
y = [0] * n
for i in range(0, n):
    y[i] = math.sqrt(i)
CPU times: user 3 µs, sys: 1e+03 ns, total: 4 µs
Wall time: 7.87 µs

処理を何度か繰り返して処理時間の平均値やばらつき(標準偏差)を計測したいときには %timeit%%timeit を使います.


%timeit sum(range(10000))
143 µs ± 817 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%%timeit
n = 10000000
y = [0] * n
for i in range(0, n):
    y[i] = math.sqrt(i)
1.09 s ± 25.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

マジックコマンドの一覧は %lsmagic で確認できます.


%lsmagic
Available line magics:
%alias  %alias_magic  %autoawait  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %conda  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %pip  %popd  %pprint  %precision  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Automagic is ON, % prefix IS NOT needed for line magics.

上の結果を確認すると,Windows でも %ls コマンドが使えることがわかりました.このマジックコマンドを実行すると,内部的には dir コマンドが実行されるようです.


%ls
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 9018-19A1 です

 C:\Users\Rinsaka\Documents\Python\magic のディレクトリ

2022/01/31  14:43    <DIR>          .
2022/01/31  14:43    <DIR>          ..
2022/01/31  14:30    <DIR>          .ipynb_checkpoints
2022/01/31  14:37            36,279 magicコマンド.ipynb
2022/01/31  14:32                30 shell.py
2022/01/31  14:29                30 shell-2.py
               3 個のファイル              36,339 バイト
               3 個のディレクトリ  47,545,159,680 バイトの空き領域

Mac で %ls コマンドを使うと,シェルの ls が実行されるようです.


%ls
magicコマンド.ipynb     shell-2.py              shell.py

マジックコマンドの使い方の詳細を調べたいときには ? を使うと良いでしょう.


?%%markdown
Docstring: Render the cell as Markdown text block

Windows で Anaconda プロンプトや Mac でターミナルを起動することなく,Juypter Notebook の中でライブラリのインストールを実行することも可能です.まず,%pip list でインストール済みのライブラリを確認します.


%pip list
Package                            Version
---------------------------------- -----------------
absl-py                            0.8.1
(省略)

例えば,ortoolpy をインストールします.なお,インストール完了後は「Kernel」→「Restart」を実行しなければ利用できないことがあります.


%pip install ortoolpy
Collecting ortoolpy
  (中略)
Installing collected packages: ortoolpy
Successfully installed ortoolpy-0.2.38
Note: you may need to restart the kernel to use updated packages.

インストールできたかどうかをチェックします.上と同じように%pip list の結果から探しても良いが,検索で絞り込む事もできます.Windows の場合は次のように入力します.


%pip list | find "ortoolpy"
ortoolpy                           0.2.38

Mac の場合は次のように入力します.


%pip list | grep ortoolpy
ortoolpy                           0.2.38

目次に戻る