python

numpyを使って主成分分析

古いソースが出てきたので、とりあえずメモ #coding:utf-8 import numpy #主成分分析関数 def PCA(P): m = sum(P) / float(len(P)) P_m = P - m l,v = numpy.linalg.eig( numpy.dot(P_m.T,P_m) ) return v.T #分析する標本集合 points = numpy.array([ [-1,-…

3次元ベジェ曲線のバウンティボックスを求める

■ベジエ曲線のバウンディングボックス http://d.hatena.ne.jp/nishiohirokazu/20090616/1245104751 InkscapeのSVG解析ですね、ええわかります。 Inkscape SVGは独自拡張記法で回転中心という項があるんですよね、しかし、バウンティボックスという拡張記法は…

既存のファイルリストをワイルドカードでフィルタする

ドラッグアンドドロップで与えられたファイルリストを、ワイルドカードでフィルタしたい場合があります。 そういう場合はglobではなくfnmatchモジュールを使います、pythonではワイルドカードとは呼ばずに「Unix ファイル名のパターンマッチ」と呼ぶそうです…

多重キーでのソート

多次元リストのソートってよく使う機能だと思うんですが、pythonのソートってよく考えて作ってあるなぁと関心しました。例えば、次のような「生徒の成績リスト」があったとします。 # 配列の並び順 [名前],[国語],[算数] a = [ ['Tim', 55, 46 ], ['Jack', 5…

ガベージコレクションを無効にする

gcモジュールでは、ガベージコレクションの制御をすることができます。 >>> import gc >>> >>> gc.disable() #ガベージコレクションを無効にする >>> gc.isenabled() False >>> gc.enable() #ガベージコレクションを有効にする >>> gc.isenabled() True 一体…

標準出力を独自クラスに置き変える

既存のCUIベースのpythonスクリプトを、GUIベースに乗せ換えたりするときがありますよね。 標準出力を変更できれば、既存モジュールを変更せずにprint文表示先を、GUIコントロールに変えることが可能です。pythonでは標準出力はsys.stdoutに設定されています…

python3.1の新機能が良い・・・(´Д`;)ハアハア

Python3.1の新機能がなかなか良いですね・・・■What’s New In Python 3.1 http://docs.python.org/dev/py3k/whatsnew/3.1.html細かいところがいろいろ改善されています、嬉しかった機能をあげてみました。 順序付き辞書機能 今までの辞書は順序は保証されて…

クラスで動的にメソッドを追加

どうも忘れやすいのでメモ。 class C: pass def attach(self, arg): self.val = arg print self.val C.attach = attach obj = C() obj.attach("test attach")

pythonでExcelファイルを読み込む

読み込みだけなら、xlrdモジュールが使えます。http://www.lexicon.net/sjmachin/xlrd.htm適当なExcelファイル「Book1.xls」を作ります。 以下、クイックスタートサンプルです。 import xlrd book = xlrd.open_workbook("Book1.xls") print "The number of w…

pyevolveによる遺伝的アルゴリズム(2)

pyevolveによる遺伝的アルゴリズム(1) GAを更に理解するために、GAの用語を説明します。 用語さえ分かれば、サンプルコードを眺めるだけで何をやってるかだいたいわかるようになります。 Genome(遺伝子) ドイツ語で「ゲノム」と読みます。 遺伝子(Gene)+染色…

pyevolveによる遺伝的アルゴリズム(1)

時代はすでに遺伝的プログラミングに移行している感がありますが、遺伝的アルゴリズム(Genetic Algorithm)をやってみます。 pythonのライブラリである『pyevolve』を使うと、笑っちゃうほど簡単にGAができちゃいます!フヒヒwwwサーセンwww■pyevolve http://pyevolv…