#author("2021-04-10T22:47:11+09:00","default:LabMember","LabMember") #author("2021-04-10T22:47:35+09:00","default:LabMember","LabMember") [[PythonTutorial]] * Pythonの基本 [#j4e418fc] ここではPythonの基本的な使い方をまとめる. #contents ** Pythonの基本 [#s788f0a2] Python自体の入門には,以下のようなサイトが役に立つ. - [[Python Documentation>https://docs.python.org/3/]]: Pythonの公式ドキュメント.ここのTutorialは入門に適している.[[日本語訳>https://docs.python.org/ja/3/]]もあり. - [[Python Japan>https://www.python.jp/install/install.html]]:日本語のサイト.環境構築から基本的な使い方まで一通りのことは書いてある. 各モジュールの使い方は,それぞれの公式ドキュメントを参照(ググっても色々出てくるが結局公式が一番まとまっている). *** モジュールと名前空間 [#l0ab4430] Pythonを使う上で一つ注意しなければならないのは,名前空間の問題である. Pythonでは,次のようにモジュールを読み込む. import numpy この記述によって,numpyモジュールが読み込まれた.numpyには様々な関数が定義されているが,これらの関数は,numpy.関数名 という形式で呼び出さなければならない.例えば,numpyのexp()関数を呼び出すには, numpy.exp(3) のように呼ばなければならない.これは、様々なモジュールを読み込んだ際に,モジュール内で定義されている関数名がぶつからないように,名前空間を分離しているからである.いちいちnumpyと打つのが面倒な場合, from numpy import * とすることができる.この場合,numpyの名前空間がトップレベルの名前空間と統合されるため,exp()と記述するだけで,numpy.exp()を呼ぶことができる.しかし,numpyで定義されている関数とトップレベル名前空間にあるオブジェクトの名前が衝突する場合,問題が起こることもあるので,注意が必要である.妥協案として, import numpy as np のように,numpyに短い別名を付けることもある.この場合,np.exp()とすれば,numpy.exp()を呼び出すことができる.このページの解説では,この方法を採っている. また特定のよく使う関数のみを呼び出す場合には from numpy import exp と書くこともできる. *** ヘルプ [#t54b0ff8] コンソールにjupyterやipythonを使っている場合, np.exp? というように,オブジェクト名(関数名)の後に?を付けてEnterを押すと,このオブジェクトに関するヘルプが表示される. *** Matlab, Scilabとの相違点 [#qd64e935] PythonはMatlab系言語とはかなり違った文法を持つが,以下の点は特に注意が必要である. - リストのIndexは0から始まる. >>>a=[1,2,3,4] >>>a[0] 1 添字でリスト一部を読み出す際の規則(PythonではSlicingと呼ぶ)も若干違う. >>>a[1:3] [2,3] これについては,Python Tutorialの[[Stringsに関する部分>http://docs.python.org/tutorial/introduction.html#strings]]にあるように,Indexはリスト要素の境界線を指すと考えると分かりやすい. - べき乗は**で表す. >>>2**3 8 ** 簡単な例 [#j032fb89] ここでは, y=sin(x)/x というグラフを描くコードを例に使い方について簡単に解説する. *** モジュールのインポート [#n94ffda5] まず必要なモジュールをインポートする.三角関数はnumpyに含まれる.グラフの描写にはmatplotlib.pyplotを用いる. import numpy as np import matplotlib.pyplot as plt *** 関数の定義 [#la978d42] 次に,関数を定義する.関数の定義には def 関数名(引数): のように書く. def sinc(x): return np.sin(x) / x pythonの特徴として,インデントを文法に取り入れている点がある.上のコードの2行目に空白があるが,これはインデントでどこまでが関数の定義に含まれるかを表している. 何かを出力する関数を定義する場合は, return の後に出力結果を書く. *** プロットする点 [#c1d211ca] プロットする横軸の値の入れ物を用意する.同様の結果を出す方法はいくつかあるが,ここでは numpy.arange を用いる.使い方は np.arange(始点, 終点, 点の間隔) となっている.ここでは [-5π, 5π] を0.01刻みでプロットすることにする. x = np.arange(-5*np.pi, 5*np.pi, 1e-2) これで作られたxは,np.array というオブジェクトである. 細かいことはドキュメントを見てもらうとして,xを先ほど定義した sinc に代入すればプロットの縦軸の値が得られる. y = sinc(x) *** グラフの描写 [#a932902a] グラフを描写するために,まずは入れ物を用意する. plt.figure() 入れ物に,プロットをする. plt.plot(x,y) プロット結果を表示する. plt.show() すると図のようなグラフが表示されるはずである. #ref(./plot.png,30%);