Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

ライブラリ

scikit-learn 最小二乗法

scikit-learnで最小二乗法 y=sin(x)に誤差をランダムで付加した100個のデータを準備し、 学習用:テスト用=8:2に分けて実行。 import numpy as np import matplotlib.pyplot as plt #sklearn.cross_validationは非推奨、次のヴァージョンで廃止予定 #sklea…

matplotlib グラフの設定

matplotlibのグラフの設定について 日本語の表示 日本語を表示する場合は、表示するごとにfontproperties = fpをセットする。 from matplotlib.font_manager import FontProperties fp = FontProperties(fname='C:\WINDOWS\Fonts\msgothic.ttc', size=14) pl…

モジュール

1つのモジュールは~.pyという1つのスクリプトファイルに相当する。 __name__ スクリプトファイルは単独のプログラムとしても動作するし、他のプログラムやモジュールから呼び出して使うこともできる。 ・__name__属性 単独のプログラムとして起動したときは…

decimal

decimalモジュールのDecimalクラスは数値演算での誤差を回避するクラス。 小数の計算では誤差が生じる。 for i in range(10): print(i * 0.1) # 0.0 # 0.1 # 0.2 # 0.30000000000000004 # 0.4 # 0.5 # 0.6000000000000001 # 0.7000000000000001 # 0.8 # 0.9 …

高階関数、デコレータ

高階関数...関数を関数に渡したり、戻り値として関数を返したり。 関数に機能を追加できたりする。 print(int(3.14)) # 3 print(int("100", 3)) # 9 :3進法の100は10進法の9 def arg_check(func, arg): print(arg) return func(arg) print(arg_check(int, 3.…

NumPyの使い方(19) 数え上げ

NumPyの数え上げ(要素のカウント)について。 0,1のみのデータから1や0の個数を数える方法 import numpy as np a1 = np.array([0, 1, 1, 0, 1, 0, 0, 0]) # 1の個数をカウントする例 print(np.count_nonzero(a1)) # 3 print(a1.sum()) # 3 print(len(np.where…

pandasの使い方(3) インデックス

pandasのインデックスオブジェクトについて。行や列のインデックスは「インデックスオブジェクト」として保持。 行:DataFrame.index 列:DataFrame.columns import numpy as np import pandas as pd data = {"year": [2010, 2011, 2012, 2013], "pref":["千…

NumPyの使い方(18) 次元操作

NumPyの次元操作について 次元の増減 保持 削減 増加 reshape ○ ○ ○ resize ○ ○ ○ flatten ○ × rabel ○ × any, all × ○ × sort ○ △ × axis略で1d スライス ○ × × インデックス × ○ × ファンシーインデックス ○ ○ × take ○ △ × axis略で1d mean, sum × ○ × mi…

NumPyの使い方(17) 構造化配列

NumPyの構造化配列(structured array)について。 dtypeを自分で設定して、異なる型の変数を織り込める。 フィールド名で要素を参照できる。 dtype = [("x", int), ("y", float)] a1 = np.array([(1, 2), (3, 4), (5, 6)], dtype=dtype) print(a1) # [(1, 2.0…

NumPyの使い方(16) 行列matrix

NumPyのmatrixについて。 class 種類 次元 ndarray 配列 次元は自由 matrix 行列 2次元に固定 ndarrayでは行列の積を表すときにdot()を呼びだすが、 matrixでは「*」や「**」で行列の積などを表せる。 その他の使い方はndarrayと同様のようです。 import num…

NumPyの使い方(15) ブロードキャスト

NumPyのブロードキャストについて。 配列の次元、大きさ(要素数)などが異なっていても配列どうしやスカラーの演算ができる。 ブロードキャストができるのは、2つの配列のshapeを最終軸から順に比較していき、同じ大きさか、一方が1であるかチェック。 1つ…

NumPyの使い方(14) 繰り返し

NumPyの繰り返しrepeat()、tile()について。 np.repeat() 配列の要素を繰り返す。 axisを省略すると1次元にflattenされる。 import numpy as np a1 = np.arange(4) print(a1.repeat(2)) # [0 0 1 1 2 2 3 3] print(a1.repeat([3, 2, 1, 0])) # [0 0 0 1 1 2]…

Numpyの使い方(13) 結合・分割

Numpyの配列の結合・分割について。 np.concatenate() 2個以上の配列を軸指定して結合する。 軸指定オプションのaxisはデフォルトが0 マスクは保存されない。(マスクについては別の記事で) import numpy as np a1 = np.array([[1, 2, 3], [4, 5, 6]]) a2 …

NumPyの使い方(12) 乱数、random

乱数を発生させるライブラリは主に2つ。randomライブラリとNumPyのrandom 2つのライブラリの一番の違いは乱数の発生個数。 乱数の発生個数 randomモジュール :乱数1個 numpyは配列の形をsize=~の形のキーワード引数で乱数の個数を指定できる。 size 省略…

NumPyの使い方(11) 行列計算

NumPyの行列計算について 内積 内積はnp.dot()関数を使うかarray.dot()メソッドを使うか。 内積は順序によって結果が異なる。 import numpy as np a1 = np.ones([2, 2], dtype=int) a2 = np.arange(1, 5).reshape(2, 2) print(a1) # [[1 1] # [1 1]] print(a…

NumPyの使い方(10) 集合関数

NumPyの集合関数について。 python標準のset型も参照。 1次元配列を対象とした集合関数 unique(x) 重複を除外し、ソートした配列 in1d(x,y) xの各要素がyに存在するか intersect1d(x, ) 共通部分。積集合 union1d(x, y) 和集合 setdiff1d(x, y) 差集合 setxo…

NumPyの使い方(9) 並べ替えsortなど

NumPyのsortについて。 sort()メソッド 内部で配列をソート。返り値はNone np.sort()関数 ソート済み配列を返す。元の配列は保存。 # coding: utf-8 import numpy as np np.random.seed(1) a1 = np.random.randint(0, 100, 10) print(a1) # [37 12 72 9 75 5…

NumPyの使い方(8) 真偽値

NumPyの真偽値について。 ・TrueとFalse python標準のTrue, Falseでは False 数値のゼロ、空文字列、空配列、False True 他すべて TrueがFalse以外ということは、 負の値、NaN、infもTrueとなる。・条件がTrueとなる要素の確認 import numpy as np a1 = np.a…

NumPyの使い方(7) 統計関数、最大・最小

NumPyの統計関数の使い方 ndarray配列全体、あるいは特定の軸についての統計処理をする。 sumやmeanなどの集計処理は次元削減になる。 axis=0 縦方向にreduce axis=1 横方向にredece sum 和。 長さ0の配列では0を返す。 mean 平均。長さ0の配列ではNaNを返す…

NumPyの使い方(6) 条件制御

NumPyの条件制御について。 if~elseで条件分岐をするとき a = 5 if a >= 0: b = 1 else: b = -1 と書けますが、これを3項演算子を使い以下のようにも書けます。 b = 1 if a >= 0 else -1 似たような動作を組み込みのリスト型で行うとき、 例えば、Trueなら…

NumPyの使い方(5) ベクトル演算とユニバーサル関数

ベクトル演算とユニバーサル関数について。 ベクトル演算 ndarrayと数値(スカラー)の計算は全要素対象で、forループを使わない。 ndarrayどうしの演算は対応する位置の要素どうしで計算。 [注意]ndarray * ndarrayは内積や外積にはならない。 import numpy a…

NumPyの使い方(4) 形状変換と転置

NumPyの形状変換と転置について。 reshape()、resize() タプルでshapeを指定して形状を変換する。 変換前後で全要素数が一致しないときはValueError -1を指定した軸はNumPyが自動で判断。 もとの配列を参照を得るので、値変更は元の配列に及ぶ。 np.resize()…

NumPyの使い方(3) インデックス、スライス

NumPyのインデックス、スライスについて。 1次元配列のインデックス、スライス 値の参照:python組み込みのlistと同様 値の代入:まとめて同じ値が代入(ブロードキャスト) import numpy as np # 値の参照、代入 a1 = np.arange(1, 10) print(a1) # [1 2 3…

NumPyの使い方(2) データ型

NumPyのデータ型 dtype 略号 種類 int32 i, i4 符号あり整数 32bit unit32 I, u4 符号なし整数 32bit float32 f, f4 小数 64bit complex64 F, c8 複素数 128bit bool 真偽値 True, False object O pythonオブジェクト string バイト文字列型 固定長。5文字な…

NumPyの使い方(1) 配列の生成

NumPyの使い方について。 NumPyとは ・NumPy: numerical pythonの略。科学技術計算の基盤となるパッケージ ・多次元配列オブジェクト ndaaryay(N-dimensional array) ・高速演算 ・ファイルの読み書き ・線形代数、フーリエ変換、乱数 ・C、C++、FORTRANのコ…

pandasの使い方(2) DataFrameの生成

データフレームを作る(1) numpyの配列から作る。 import numpy as np import pandas as pd a = np.random.randint(1, 100, (3, 2)) frame = pd.DataFrame(a, columns=["a", "b"]) print(frame) # a b # 0 85 80 # 1 85 10 # 2 17 38 データフレームを作る…

matplotlibでアニメーション

matplotlibでアニメーションを作ります。 # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import matplotlib.animation as ani def create_circle(): c1 = plt.Circle((0, 0), 0.5) return c1 def update_radius(i, c1): # i:フレーム番号 plt.cl…

matplotlibで図形

matplotlibで図形を描く方法。 plot()関数が呼ばれると背後でfigure()が呼ばれ、続いてaxes()が呼ばれてfigureの中に軸をつくる。 plot()関数を呼ばずにfigure()やaxes()で図、軸を設定できる。 import matplotlib.pyplot as plt c1 = plt.Circle((0, 0), ra…

matplotlibの色名一覧

matplotlibの色名一覧 この色名一覧はpythonで書かれていて、同じページにコードも載っています。 あとでゆっくりコードを読んでみようと思います。 # coding: utf-8 from __future__ import division import matplotlib.pyplot as plt from matplotlib impo…

matplotlibで散布図

matplotlibで散布図を描く方法について。 Definition : plt.scatter( x, y, # x座標, y座標の配列 s=None, # マーカーのサイズ c=None, # マーカーの色 marker=None, # マーカーの形 cmap=None, # cがfloat型のときのカラーマップ norm=None, # cをfloat型配…