おっぱいそん!

pythonを数値計算に使うときのテクニックとかをまとめていきたい。

2015-01-01から1年間の記事一覧

Octave

とある論文のsupplemental materialにあったMATLAB(線形代数のパッケージを詰め込んだ有料ソフト)のコードを動かしたかったので、Octave(MATLABと互換性のある無料ソフト)をインストールして使ってみた。 MAC OSX(Yosemite)へのインストールはhttps://…

行列のランクと固有値の関係

行列のrankとnonzeroの固有値の関係について、すぐに忘れるのでメモしておく。 結論から先に書くと、一般の正方行列Aについて、 rank A ≧ Aの(重複度も含めた)nonzeroの固有値の数 が成り立つ。 特に、対角化可能な行列の場合には rank = nonzeroの固有値…

pythonでフィッティングをする

pythonでfittingをする方法。例えば、 というをパラメータとする関数でデータ点を が最小になるようにfittingしたいとする(最小二乗法)。 scipy.optimizeのcurve_fitを使うのが楽(scipy.optimizeにはleastsqという関数もあり、こちらでも同じことができる…

関数で複数の返り値を返す方法

pythonにおいて関数で複数の値を返すと、デフォルトではタプルになる。 def f_tuple(x): plus = x + 1 cubic = x ** 3 return (plus, cubic) result = f_tuple(2) print result[1] returnの後の(plus, cubic)はカッコをのけても同じ動きをする。 また、受け…

Named tuple

pythonの組み込みのコンテナ型(=コレクション型)にはリスト、タプル、ディクショナリがある。 この記事では、名前付きタプルというコンテナ型を紹介したい。(名前つきタプルはクラスの書き方をふんだんに使っているので、クラスを知らない人はクラスを先…

numpyの型

自分用のメモにまとめておく。numpyの基本的な型は以下の5つ。 真偽値 (bool), (符号付き)整数 (int) 符号なし整数 (uint) 浮動小数点数 (float) 複素数 (complex) ただし、(bool型を除いた)データ型はそれぞれ異なるサイズがああります。 たとえば、int…

2つの行列が相似であることの確認

2つの正方行列A,Bが与えられた時に、この2つの行列が相似、つまり、ある正則行列P(Pはユニタリ行列でなくてもよい)が存在して、 A = P B P^(-1) と書けるかどうかを、数値的に確かめたい。 (結論から言うと、僕はどうすればいいか分かりません。いい解決…

MacBook Pro (Mid 2012, 13インチ)のSATA cableの交換

2週間ほど前に、MACのOSが立ち上がらなくなりました。 結論から言うと、SATAケーブルを交換したら治ったのですが、その記録をここに書いておきます。 *特にMACBookPro Mid 2012モデルの方向けの追記をしました。 時系列 MACを久々に再起動させようとすると…

2つのarrayが近似的に同じか比べる

2つのNdarrayが近い値かどうかを比べるには、numpy.allcloseを使う。 numpy.allclose(a, b, rtol=1e-05, atol=1e-08) 2つのarray a,bを受け取って(a,bは同じshapeのarrayでないといけない)、すべての成分が absolute(a - b) ≦ (atol + rtol * absolute(b))…

複素数型が実数に近かったら、実数型にする

complex型のndarrayが与えられた時に、もし複素数の部分が小さいなら、floatなどの実数の型で近似する方法。 そういう関数、ありそうだと思ってググったらNumpyの関数にnumpy.real_if_closeというのがあった。 numpy.real_if_close(a, tol=100) この関数はNd…

Pythonの代入の挙動

Pythonで代入をした時に、各変数がどのオブジェクトを指すかをまとめておく。特に、list(リスト)とNdarray(配列)の違いをば。 前回の記事も参照 : http://oppython.hatenablog.com/entry/2015/01/15/014729 例1 前回の記事でも書いたようにPythonでは、…

Pythonの型の分類と代入

変数が指すオブジェクトがどれかなどの振る舞いをすぐ忘れてしまうのでメモしておく。 組み込み型の分類 まず、Pythonの組み込み型についてまとめておく。 管理方式 管理方式の違いで分類すると、以下のようになる。 コレクション型(=コンテナ型):複数の…

numpy.matrixとnumpy.ndarrayの違い

numpy.matrixと2次元のnumpy.ndarrayは同じことができるが、numpy.matrixでできることはすべてnumpy.ndarrayでできる。 numpy.matrixがある理由はたぶん、行列を扱う時にはnumpy.ndarrayより見やすいので。 行列以外の高次のテンソルを扱う時には、混乱を避…

固有値問題

Pythonで固有値問題を解く方法についてメモしておく。 メジャーな方法として、以下の3つがある numpy.linalgの関数を使う。 scipy.linalgの関数を使う。 scipy.sparse.linalgの関数を使う。 numpy.linalgとscipy.linalgには以下の4つの関数がある。 eig:一…

外積

Numpyで外積を計算する方法をまとめておく。ベクトル(1次元配列)同士の外積、つまり c[i,j] = a[i]b[j] はnumpy.outerを使って、 http://docs.scipy.org/doc/numpy/reference/generated/numpy.outer.html import numpy as np a = np.ones(3) b = np.arange(2…