高速数値計算ライブラリ「Numpy」覚書き

Pythonで一番有名で普及しているライブラリと言っても過言ではない「Numpy」の覚書きです。かなり多機能な数値計算ライブラリで、内部はC言語で記述されているため超高速に動作します。 ベクトル ベクトルの長さ&正規化 import numpy a = numpy.array([[2,2…

PythonでA*(A-Star)アルゴリズム

今回はA*アルゴリズムをPythonでやってみます。 ゲームプログラマの間では、もはや常識となりつつある最短経路問題解決アルゴリズムです。 A*は、古典的手法である「ダイクストラ法」を改良したものです。 スタート地点からノードnを通ってゴールに辿り付く…

RSA暗号で「ふっかつのじゅもん」を作る(3)-完結

Pythonを使って高速素数判定をしてみる - Pashango’s Blog RSA暗号で「ふっかつのじゅもん」を作る(1) - Pashango’s Blog RSA暗号で「ふっかつのじゅもん」を作る(2) -RSA暗号鍵の生成 当初はサクッと終わらせるつもりだったのに、意外と長くなってしまいま…

RSA暗号で「ふっかつのじゅもん」を作る(2) -RSA暗号鍵の生成

Pythonを使って高速素数判定をしてみる - Pashango’s Blog RSA暗号で「ふっかつのじゅもん」を作る(1) - Pashango’s Blog さて前回からの続きです、RSA暗号で「ふっかつのじゅもん」を作ってみましょう。 RSA暗号では、暗号化するデータのビット数よりも、1…

RSA暗号で「ふっかつのじゅもん」を作る(1)

オッス、オラ、トンヌラ! 前回は、高速素数判定を作りましたが、今回はRSA暗号を使って、昔懐かしの「ふっかつのじゅもん」を作ってみましょう。 Pythonを使って高速素数判定をしてみる - Pashango’s Blog あ、「今さらRSAかよ」と思いました? 自分でRSAを…

AndroidでColladaのローダーを探しています

〃〃∩ _, ,_ ヤダヤダ! ⊂⌒( `Д´) < AndroidでCollada読めなきゃヤダ! `ヽ_つ__つ ジタバタ _, ,_ (`Д´ ∩ < 自分でLoader書くなんてヤダヤダ ⊂ ( ヽ∩ つ ジタバタ 〃〃 〃〃∩ _, ,_ ⊂⌒( つД´) < Colladaバージョン変わったら `ヽ_ ノ ⊂ノ 書き直…

Pythonを使って高速素数判定をしてみる

みなさん、素数を数えてますか? 『素数』は1と自分の数でしか割ることのできない孤独な数字。 暗号化できたり、乱数を作れたり、心を落ち着いたりして、私達に勇気を与えてくれます。 素数といえば「エラトステネスのふるい」ですが、あれは大きい桁の素数…

"sep".join()は気持ち悪くないよ!

"sep".join(list) が気持ち悪い理由 そんなに Array.join がいいのか Pythonの','.join()がキモいと思ってた時代が僕にもありました Pythonの文字列連結(join)にまつわる議論 まとめと考察(2) "".join()が色んなところで話し合われているんですね。 眺めて…

小数点の切り上げ/四捨五入/階乗計算

時々使うんだけど、調べると検索になかなかヒットしなくてイラッとするものたち。 小数点の切り上げ import math math.ceil(0.1) #=>1.0 四捨五入 round(0.4) #=>0.0 round(0.5) #=>1.0 round(0.15,1) #=>約0.2 round(124,-1) #=>120 階乗計算 階乗はVersion…

Androidを始めることになりました

仕事の関係上、Androidを始めることになりました。実は携帯アプリは、昔やってました。 でも、携帯アプリの開発にはあまり良い思い出はありませんね。 「なんだこの仕様・・・」とイラつくんですよね、特にドコモさんにはいつもイラつかせて頂いておりました…

Inkscapeのプラグインでも作るか

そろそろ作っておくべきか・・・ でも、Inkscapeプラグインの日本語資料はほぼ壊滅。 あっても古いしな・・・とりえあず、inkex.pyあたりを読むしかないか・・・

主成分分析を使ってバウンティボックスを作る

以前にnumpyを使った主成分分析を公開しましたが、今回はそれを使ってバウンティボックスを作ってみます。 ある頂点集合に対して、適切なバウンティボックスを求めたいとしましょう。簡単に思いつく方法としては、基底軸X,Yごとに最大値&最小値を求め、それ…

Inkscape0.47の新機能

Inkscape0.47(NightBuild版)を触ってみた感じですが、結構良いです! ただ、正式版ではないのでまだ不安定かな・・・ざっと触った感触で、独断と偏見で主な新機能を挙げていきます。 充実したスナップ機能 0.47を起動すると、新しいツールバーが目につきま…

同じ色を一気に変更する方法

前からInkscapeを使っていて、不便に感じていたのが「色で選択」がないことでした(Illustratorにはある)。 色で選択は無いですが、同じ色を一気に変更する方法があったのでメモ。 「エフェクト」→「色の数」→「Replace color...」を選択すれば、色を一気に…

なぜPythonには"標準"で定数を定義できないのか?

結論から言うと、Pythonになぜ"標準"で定数がないのかは「わかりません」。 答えを求めていた人には申し訳ない。 Pythonには知っての通り、定数を定義できません。 (独自でconstクラスを実装すれば定数らしき事はできます) 定数の実装が難しいとは考えにく…

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

pyevolveによる遺伝的アルゴリズム(1) pyevolveによる遺伝的アルゴリズム(2) 今回はGAで「巡回セールスマン問題」を解いてみます。 「matplotlib」のインタラクティブモードを使い、巡回経路がリアルタイムで変化するようにしました、経路がウネウネと最適化…

pythonグラフライブラリ「matplotlib」覚書

http://matplotlib.sourceforge.net/よく使う機能のみピックアップ。 グラフ(plot) from pylab import * x = arange(-10, 10, 0.1) y = sin(x) plot(x,y, '--') show() 棒グラフ(bar) from pylab import * datas = {"Tim":7, "Jack":10, "Matthew":4} width …

右クリックで簡単な画像操作「nautilus-image-converter」

スクリーンショットなどを撮っていると、画像を縮小したくなるときがあります。 「nautilus-image-converter」は、右クリックメニューから「画像の拡縮」と「画像の回転」を実行できるようになるアプリです。ブログや資料作りをしている人にはおすすめ。

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…

SVNクライアント「Nautilus SVN」

Windowsには「TortoiseSVN」という素晴らしいSVNクライアントがあります、LinuxにはRapidSVNなどのGUIのSVNクライアントはありますが、どれもイマイチな感じでした。でも、ついにでたのですねLinux版「TortoiseSVN」と言われる「NautilusSVN」がっ! 早速い…

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

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…

PC絵素材

技術資料を書いていると、PC絵素材が必要になったりします。 拡縮に対応できるようベクターデータは必須で、Webでも使いたいからSVG形式がよくて、エクセルとかについてるダサいやつじゃなくて・・・ とか言ってると、なかなか見つかりません。 そこで使いや…

下に隠れたオブジェクトを選択する方法

Inkscapeの操作で意外と困るのは、オブジェクトの下に隠れているオブジェクトを選択する時です。実は「Alt+左クリック」で、下に隠れたオブジェクトを選択する事が出来ます。 (下に隠れたオブジェクトが複数ある場合は、クリックするたびに選択が変わってい…