Welcome to Mashykom WebSite


PythonのTutorials 入門編

  Pythonはさまざまな分野のアプリケーションで使われている、極めてパワフルな動的プログラミング言語です。機械学習、ディープ・ラーニングやデータサイエンスなどの分野では必須の言語となっています。ロボティクスで使用されるシングルボード・コンピュータのRaspberry Piでは組み込み言語として必須の役割をします。Pythonはよく、C言語(C++)、Javascriptなどとよく比較されます。C言語と異なりPythonはコンパイルする必要がなく、次のような特徴があります:
・直感的なオブジェクト指向
・手続き型のコードによる、自然な表現
・高レベルな動的データ型
・広範囲に及ぶ標準ライブラリとサードパーティのモジュール
・拡張とモジュールはC/C++で書くのが容易
・アプリケーションに組み込んでスクリプトインタフェースとして利用することが可能
しかし、C++と比較して、コンパイルが必要ないことの反面で、処理速度はC++をコンパイルしたコードの実行に比較して遅くなります。超高速の処理が必要な場合には、C++と組み合わせて活用することが必要です。私もPythonとC++を組み合わせて利用しています。ロボット操作のためには、さらに、JavaScriptも組み合わせて利用します。
  近年様々なプログラミング言語をサポートするインタラクティブ環境であるJupyter Notebookが必須となりつつあります。ロボティクス、データサイエンスや機械学習(人工知能)に関係する仕事をする人にとって、仕事を効率的に進めるためにもJupyter Notebookの使用は非常に重要だと思われます。Jupyter Notebookのインストールと利用方法につても少々説明します。したがって、Jupyter Notebookを用いることを前提にしています。このページに掲載されるスクリプト類の動作は、MacOS10.12及びUbuntu 16.04で実証しています。Windowsでも問題なく作動すると思います。

(Last updated:2018/6/30)



**************************************************************
Pythonのインストールと起動
**************************************************************

 

 Pythonは2種類のバージョン、3.xと2.xという2種類が共存している。python 2.7は旧バージョンですが、すでに膨大な数の応用ライブラリーで組み込まれています。これらのライブラリーでバージョンを3.xにアップデートすることは徐々に始まっている状態です。バージョン3.xとバージョン2.xとの間には互換性はありません。これがPythonの最大の弱点です。例えば、ロボット制御用のフレームワークとして重要なROS(Robot Operarting System)はバージョン2.7を組み込んでいて、3.xには対応していません。画像分類のライブラリーである Caffe なども、python 2.7 バージョンを使用しています。しかし、これからpythonを始める場合は、バージョン3.xから始めるのが得策です。

 ここでは、新しいバージョンである3.xを対象とします。2018年2月12日現在で、3.xバージョン最新版はpython 3.6.4です。

 Pythonはフリーソフトなので、多数のサイトから無料でダウンロードできます。Ubuntuや Mac OSでは、最初から、python2とpython3 が組み込まれています。ただし、これらは古いバージョンですので、アップデートする必要があります。日本でのPythonサイトは、
www.python.jp
です。各自のPCにインストールされていないときは、このサイトからダウンロードすることができます。Pythonの英文ホームページのダウンロードページは以下の通りです。

英文公式ホームページのPython 3.6.4用ページ

このページの下の方に位置する[Files]という見出しの下に多数のinstallerが並んでいます。この中から、各OSに対応したMac OSX (64bit) installer、Windows (X86) MSI installer、あるいはLinux installerをダウンロードできます。

  Pythonを用いて、科学技術計算、データの統計処理、グラフィックスの作成、ネットワークの分析などを実行するためには、それらに対応するPythonのモジュール・パッケージをインストールする必要があります。例えば、Numpy、Scipy、Pandas、 sympy、Matplotlib、Networkxなどのsite-packagesをインストールする必要が出てきます。これらのパッケージをインストールする通常の方法はpipというコマンドを用います。

python -m pip install packagename

 この場合、各パッケージごとに実行するという煩雑性がおきます。さらには、各モジュール間の相互依存性と整合性にトラブルが生じることもあります。モジュール・パッケージを一括してインストールする便利な方法は、それを実現してくれるフリーソフトを活用することです。Pythonの重要なサイト・パッケージを(Python本体を含めて)一括してインストールするフリーソフトとして、Anaconda、Canopy、python(x,y)などのパッケージ・インストーラが開発されています。ここでは、Anacondaインストーラーを使用することにします。AnacondaはContinuum Analytics社が開発していますが、無料でダウンロードできます。ダウンロードサイトは、

http://www.continuum.io/です。

です。Python 3.6に対応するバージョンAnaconda3をダウンロードして下さい。デフォルトのままの手順でインストールを行うと、新しくAnaconda3という名前のディレクトリが自動的に作成され、その中にPython本体を始めとしたすべてのモジュールがインストールされます。環境変数PATHも自動的に設定されます。Anacondaはanaconda-navigatorというプログラムで起動できます。デスクトップからでも、ターミナルからも起動できます。

  Ubuntu OSやMac OS ではGUIで使用するより、ターミナル上からコマンドを入力して起動します。ターミナルで[ipython]と入力するとpythonシェルが起動します。

$ ipython


コマンドを入力したら、以下のようなIPython shellが現れます。

Python 3.6.3 |Anaconda custom (64-bit)| (default, Oct 13 2017, 12:02:49) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:


In [1]:の後に、Pythonのコマンドを入力して操作します。終了するときのコマンドは

In [3]: quit()


と入力します。

  Pythonの命令文や関数が処理できるデータは数値データと文字データです。これらの処理対象データを一括してオブジェクトと呼びます。オブジェクトを処理する方法を指示するのが命令文であり、関数です。数値データや文字データに操作を加えるためには、これらのオブジェクトを区別して保存する容器(引出し)が必要で、この容器(引出し)に名前(名称)をつける必要がある。名前をつけた入れ物(器)が変数と呼ばれる。

   例えば、

In [1]: x='Hello World'
In [2]: print(x)


と入力します。x=’Hello World’という命令文は、xという名称の容器(変数)にHello Worldという文字データを格納しなさいと指示します。引用符'・・・‘("・・・ “ でもよい)はオブジェクトが文字データであることを指定しています。x=”Hello World”と書いても同じです。数値データの場合は、x=2.46 などと、そのまま書きます。print(x)は変数xの内容をシェルウインドウに印字することを指示しています。だから、print文が実行され、Hello Worldと表示されます。

加算、減算、乗算、徐算などの四則演算は、それぞれ、[+],[-],[*],[/]という記号を用いて実行できます。ただし、累乗計算、例えば、2.3の5.1乗という計算は


In [3]:z = 2.3**5.1


と記述します。 IPythonを終了するためには、

In [3]: quit()


と入力します。

**************************************************************
Jupyter Notebookのインストールと使用方法
**************************************************************

Jupyter Projectにより開発されているJupyter Notebookは、インタラクティブなシェル環境で、ブラウザ上でソースコードを記述し、実行結果を確認しながらドキュメント、数式、画像を含めて一つの「ノートブック』にまとめて、保存することを可能にします。Jupyter NotebookはAnacondaをインストールした時は、一緒にインストールされています。Anacondaを使用せずにpython環境をインストールしている場合は、Terminal上で

$ python3 -m pip install --upgrade pip
$ python3 -m pip install jupyter


とコマンドを入力し、Jupyter Notebookをインストールします。python3としているのはpython2.x用のpipを使用しないためです。

  どちらのケースでも、Jupyter Notebookを起動するためにはTerminal上で

$ jupyter notebook


とコマンドを入力します。以下の様に、jupyter notebookのダッシュボードがデスクトップに表示されます。

右上に位置する[new]をクリックして、[python3]とします。ノートブックが起動しますので、作成してある[file]を開くか、あるいは、セルに新しいコードを記述します。セルの実行は[cell]をクリックして、[run-cell]します。

  Jupyterは、Cellという箱の中に、Codeや説明(Markdown)を記載していき、順次実行させて動かします。色々なiconが表示されていますが、主要な機能は以下の通りです。
・フロッピーディスクの記号はNotebookの保存(上書き保存を兼ねる)
・+アイコンがCellの追加
・はさみアイコンがCellの削除
・上下の矢印アイコンが現在のCellの位置の上下移動
・プレイの記号はセルの実行(run-cell)
・Pulldownで追加するCellの種類の選択
・Codeは、PythonなどのCodeの入力時に選択
・Markdownは、Codeや処理結果の説明を記述する時に選択。数式の表記も可能
これらの機能は使用してみないとわからないので、以下のPythonコードの実行で順次使ってみてください。

 枠取りの付いたセルにコードを書き込んで実行する、あるいは、複数個のセルにスクリプトを書き込んで、上から順番にセルのコードを実行します。この作成した(複数個のセルから構成される)ノートをファイルとして保存します。初期名称はUntitledとなっていますので、必要な名前に変えます。ファイルの拡張子はipynbとなっています。保存記号アイコンをクリックして保存すると、homeディレクトリに保存されます。Webブラウザで作業しているので、[File]-[Download as]とクリックすると、NotebookはPCのDownloadsディレクトリにダウンロードされて保存されます。Jupyter Notebookを終了させるときは、ファイルを保存して、[File]-[Close and Halt]とクリックしてください。最後に、ターミナルで[Ctrl+c]を入力して、カーネルの作動も終わらせます。

  Pythonの基礎を知るために、変数の構造と型について説明します。リストというデータ型があります。以下の例を見てください。このスクリプトをNotebookにコピペして、実行[run cells]してください。

# how to use the index
name = ["cheese", "John"]
print (name[1],name[0])

x=["spam","spam","spam","spam","spam","egg","and","spam"]
print (x[5:7])
print (x[5],x[6],x[7])


変数の要素の番地は1からではなく、0から始まります。この例から変数の構造をよく理解できます。場合に応じて処理を振り分ける必要性は頻繁に起こります。Pythonでの振り分け処理には、if文、for文、 while文があります。以下のコードをNotebookにコピペして、実行してください。

# "if" and "while" sentences
x=15
print(x)
if x < 5 or (x > 10 and x <20):
	print ("the value is ok.")

while x >= 0:
	print ("x is still not negative. x= ",x)
	x = x -1
   
# the "for" sentence
for i in [1,2,3,4,5]:
	print ("This is iteration number.",i)

#Print out the value from 0 to 49 inclusive.
for value in range(50):
	print (value,)


この例から、振り分け処理の仕方が解ると思います。 Cellの処理の順番を変えたり、突然のエラーが出たら、[Kernel] で [Clear all outputs & restart] をクリック後、再度 [Cell] - [Run All] を実行すると上から順番に処理されます。保存アイコンをクリックすると、homeディレクトリに保存(ファイルがすでに保存されている時は上書き保存)されます。ダウンロード・ディレクトリに保存したいときは、[File]-[Download as]-[Notebook]とクリックします。

関数の定義の仕方について理解するためのスクリプトを下に示します。

# Fibonachi series
def fib(n):
	a,b=0,1
	while b < n:
		print(b,)
		a,b=b,a+b
	return

fib(200)


この例は200以下のフィボナッチ数列を計算したケースです。関数は[def fib(.):]と書かれた行から始まり、[return]で終わります。ファイルを保存して、[File]-[Close and Halt]とクリックして、NoteBookを終了してください。最後に、ターミナルで[Ctrl+c]を入力して、Notebookのカーネルも閉じます。

 なお、Anacondaをインストールしているときは、[Spyder]というpython用のエディターも利用できます。[Spyder]を使用するときは、ターミナルでSpyderと入力すると、

$ spyder


 エディターとipython カーネルがデスクトップに表示されます。


このページの先頭に戻る

Python Tutorials:応用編に続く

ホームに戻る