Pythonで数値計算するライブラリ群。
“SciPy”で指すものの範囲にはいろいろあるようだが、ここではNumPy、SciPy、MatPlotlib、Pandas、scikit-image、scikit-learn等をひっくるめて扱う。
WindowsでSciPyを使いたい場合は,Anaconda(またはMiniconda)を使うのが良いと思われる.Python環境が既に入っている場合は気が向かないかもしれないが,自力でビルドする難易度を考えるとこちらのほうを推したい.
pipだけで簡単に入れるのは不可能.
というのも,SciPyは計算の高速化のためにFortranのライブラリを内部から呼び出しているのだが,インストールのためにはこれのビルドが必要でありこれがWindowsでは一筋縄ではいかないからである.私は5時間ほど費やしたところで諦めた.その点,Anaconda等はビルド済みのパッケージを配布してくれるので難しいことがない.
Jupyter や IPython のシェルで,ドキュメントを見たいもののあとに ?
をつけたものを実行するとドキュメントが読める.
import numpy as np
np.linspace?
a="hoge"
a?
最初に次のように書いてインポートする.
np
のような短縮形を使うところまでがお約束.
import numpy as np
import matplotlib.pyplot as plt
# jupyter notebook を使うなら以下を足す
%matplotlib inline
# ipython ならこっち
%matplotlib
np.ndarray
型を使う.いろいろな生成方法がある.
ちなみにndarrayは N-dimensional array の意らしい(出典).
# リストから生成
np.array([1.0, 2.3, 4.5, 1.9])
# 長さを指定した配列の生成
np.zeros(10) # 零埋め
np.ones(10) # 1埋め
np.empty(10) # 初期化しない
# 連番
np.arange(5) # => array([0, 1, 2, 3, 4])
np.arange(1, 3, 0.4) # => array([1. , 1.4, 1.8, 2.2, 2.6])
scipy.optimize
を使う。
import numpy as np
import matplotlib.pyplot as plt
# 三角函数を描画
x = np.arange(0, 2*np.pi, 0.01)
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x)) # 繰り返しplotすると重ねて描画される
# 表示
plt.show()
# グラフ画像をファイルに保存
plt.savefig("gmpt.png")
import numpy as np
import matplotlib.pyplot as plt
plt.rc('text', usetex=True)
# 三角函数を描画
x = np.arange(0, 2*np.pi, 0.01)
# labelが凡例(legend)の表示になる
# label等には、$...$で囲むことでLaTeX記法が使える
plt.plot(x, np.sin(x), label="$\sin(x)$")
plt.plot(x, np.cos(x), label="$\cos(x)$")
plt.legend() # 凡例を表示
plt.title("This is title") # グラフのタイトル
plt.xlabel("$x$ dayo") # x軸の説明
plt.ylabel("$y$ dayo") # y軸の説明
# 表示
plt.show()
2次元表のデータは「データフレーム」という形式で扱う。
いくつか作り方があるが、配列を用意してpd.DataFrame
に辞書形式で渡すのが楽だと思う。
import pandas as pd
# データの用意
hinmoku = ["蜜柑", "林檎", "葡萄"]
cost = [100, 85, 360]
area = ["愛媛", "青森", "長野"]
weight = [80, 120, 105]
# データフレームの作成
df = pd.DataFrame({"品目": hinmoku, "価格": cost, "産地": area, "重量": weight})
# >>> df
# 品目 価格 産地 重量
# 0 蜜柑 100 愛媛 80
# 1 林檎 85 青森 120
# 2 葡萄 360 長野 105
# csvへの保存
df.to_csv("fruits.csv")
最終更新: 2020-09-18 06:59:40 +0900
This page is generated by sinanoki.