python

PyCUDAをいじってみる

とりあえず サンプルコードをいじってみる。 import pycuda.autoinit import pycuda.driver as drv import numpy import time from pycuda.compiler import SourceModule mod = SourceModule(""" __global__ void square(float* p) { const int i = blockDim…

Ubuntu9.04にPyCUDAをインストール

http://d.hatena.ne.jp/trex5/20090606/p1 を参考にさせてもらってUbuntu9.04にPyCUDAをインストールに挑戦してmake testsが通ったのでメモしておく。環境は Ubuntu9.04 boost 1.39 python2.6.2 numpy1.2.1 pycuda0.93 まず正常にCUDA環境がセットアップされ…

TOPIXを取得したい

まず、適当にAPIとかあるのかななどと考え調べたが見つからなかった。次に東京証券取引所のトップページhttp://www.tse.or.jp/をパースして取得できるのではと考えて、該当するDOMノードのタグidをfirebugのピックアップの機能を使って取得した("topixdata",…

Pythonのブーリアンに関する混乱しやすい挙動

# coding: utf-8 lst = [True, False, None] def f(index): try: print lst.index(index) except Exception, e: print "exception was raised: ", e # False,True,Noneそれぞれに対してインデクシングすると # それぞれ1,0,2が返り値 f(False) f(True) f(Non…

ネイピア数1000桁

1000桁ー。 # coding: utf-8 # exp(1) = sum_0^inf[x / n!] # ネイピア数1000桁 from decimal import Decimal, getcontext getcontext().prec = 1010 n = Decimal("1.0") #n = 1.0 # コメントアウトするとfloatで計算 i = 1 e = 0 pre = None while e !=…

wxPythonのwx.lib.plotでwavファイルをプロットする

ちょっと前のエントリで書いたwaveファイルのユーティリティとwxPythonのwx.lib.plotを組み合わせてwavファイルの波形を表示させるスクリプトを書いた。それで1秒間のサイン波のwavファイルを読み込ませて動作を確認して、それではと手元にあるオーディオフ…

python3をいじる

よく使いそうな変更部分をいじった。floatの精度指定はどうやるんだろーなー インストール macportsでpython3.1.1をインストールした。 $ sudo port install python31 いじる import sys # print statement become built-in function print("Hello, World!")…

ローレンツアトラクタをPyOpenGLで描画

pythonでローレンツアトラクタ(オイラー法)

wikipediaのローレンツ方程式に書いてあるそのままのパラメータで解いてみた。画像はgnuplotで描画したもの。 同じものをいくつか他の解法で解いて比較すると面白そう。 # coding: utf-8 # lorenz attractor # scheme: euler fx = lambda x,y,z,r,p,b: -p*x …

無名関数のリストのうち一つを呼び出す無名関数のリストの混乱しやすい挙動

python2.5でGUIのプログラムをしているときにうまく動かないコードがあったので抽出して実行させたら原因が分かった。 混乱しやすいので、たしかpython3では改善されていたはず。多分。適当。 fs = [lambda: 1, lambda: 2, lambda: 3] gs = [lambda: f() for…

GLUTで表示中の画面をキャプチャする

[,h200]前回C言語で書いたコードをPyOpenGLとPILライブラリを使って書いてみた。PILを使うと前回と異なりpng形式だけではなくbmp,jpeg,tiff形式などPILの対応する形式であれば何でも保存できる。 使い方は同じで、コードをコピペして適当な場所でcapture関数…

macportsでboost.pythonをインストールする

boost.pythonが必要なpythonモジュールをインストールしようとしたらboost.pythonがインストールされていなかった。どうやらboost.pythonは標準ではインストールされないようだ。とりあえずmacportsのvariantsで調べるとオプションの一つにboost.pythonが合…

wxPythonでzipファイルの情報を表示するプログラムを書いた

『wxPython In Action』を読んでいる途中。今7章。 とりあえずプログラムを組んでみた。標準モジュールのzipfileを使ってzipファイル中の圧縮されたファイルに関連する情報を表示する。 使い方 メニューバーから[ファイル]->[開く]でファイル選択ダイアログ…

PyOpenGLでサイン波とその逆位相の波を表示させた

前のエントリで書いたユーティリティとPyOpenGLプログラムに変更を加えてサイン波の逆位相の波を作成して表示させてみた。 複数の波形を表示できるようになったので4つ同時に表示させてみた。

PyOpenGLでクオータニオンによる物体の回転を試してみた

http://staff.aist.go.jp/toru-nakata/quaternion.htmlここに書いてある内容を読んで、pythonで4元数クラスを素直に実装してみた。そしてその実装で物体を回転させるプログラムをPyOpenGLで書いてみた。Quaternionクラスは単項+,単項-,+,-,*,abs,reprをオー…

波の合成

前回のエントリで書いたユーティリティをちょっといじって新しいルールを追加してサイン波を合成させた。 Waveクラスは加算をオーバーロードする。2つのWaveクラスa,bの加算はオーディオフレームの添字をiとしてとする。1/2しているのは加算結果がwavデータ…

PyOpenGLでwavファイルの波形を表示させた

wave標準モジュールを使った自作wavユーティリティとOpenGLのpythonバインディングのPyOpenGLを使ってwavファイルの波形を表示させてみた。pythonはwavファイルを扱うモジュールが標準であるのでバイナリファイルフォーマットをパースする処理は全てライブラ…

複数のプラットフォームでwavファイルを再生する

windows, mac, freeBSD, linux上で標準モジュールだけを使いwavファイルを再生するコードを書く。 FreeBSD, Linuxの場合 ossaudiodev標準モジュールを使って再生する。メモリ上のデータを渡すのでwave標準モジュールを使うなどしてあらかじめデータをメモリ…

pythonで文字列が浮動小数点数かどうかを判定する

あるperlプログラムに文字列が浮動小数点数を表しているかどうかどうかを判定する関数を見つけた。正規表現を使って判定している。 sub checkFloat { my($arg) = @_; if ($arg =~ m/^\d+\.?\d*$/) { return($arg); } die("Integer expected"); } ふーんと思…

pythonでプログレスバーを表示させながらダウンロードする

バイナリファイルをオンメモリで一度に処理するのではなくバッファ単位で少しずつ処理するコードのサンプル作ってみた。ついでにプログレスバーで表示。使い方: 入力:ファイルのurlリストをプログラムの引数で渡すか、標準入力から1行ごとに入力するかど…

ビットで部分集合の列挙

配列aのインデクスiに対してある数nのi番目のビットが立っているかどうかを[0,2^n-1]に対して調べれば部分集合を列挙できると気がついた。 >>> a = range(4) >>> for n in range(2**len(a)): ... [a[i] for i in xrange(len(a)) if (n >> i) & 1 == 1] ... […

wxFormBuiderのnightly buildがpythonのコード生成に対応したらしい

wxWidgetによるGUI開発でwxGladeを使ってみたものの、正直いまいちというか、差分だけ適用するはずのコードが重複して生成されたりenumを自分でつらつら書くのが面倒なので他の開発ツールはないかなーと調べたら、wxFormBuilderという開発環境を見つけた。コ…

opengl学習 -三次元空間上で最小全域木を構築する-

前のエントリで使ったプログラムでさらに遊んでみた。というか本当はこれがやりたかった。ランダムに生成した三次元座標の集合から最小全域木を構築して表示させる。ちなみにこれが前回やった二次元版。 そしてこれが今回作った三次元版。 実行は以下のよう…

整数の除算の返り値の話 The History of Python -The Problem with Integer Division-

Again, all of this is an issue because Python doesn’t coerce arguments automatically to some declared type. Passing an invalid argument, for example a string, is generally caught quickly because few operations accept mixed string/numeric o…

pythonでfirefox3の検索履歴の上位25ワードを表示するグラフを表すgoogle chart apiのURLを生成する

タイトルが全てな感じ。結構前のエントリでfirefox3の検索履歴から検索回数の多いワードを表示させてみた。コマンドラインから回数だけでるのはわかりにくいのでグラフで出してみる。参考:デベロッパーガイド #! /bin/python # coding: utf8 import sqlite3…

再帰のLU分解

資源の無駄使いlu_decompの返り値が(転置されたL, U)なのであとから転置する。 # coding: utf8 # 正方行列のLU分解 # 再帰で書いたLU分解 def lu_decomp(A): if len(A)==1: return [ [1] ], [ [A[0][0]] ] else: li = [row[0] / A[0][0] for row in A] ui = …

ビット配列による素数表の作成をpythonで書いたら激しく遅かった件

以前のエントリで書いたエラトステネスの篩をpythonで実装しようとして引っかかった。まず、C言語と違ってpythonには符号なし整数が無い上に、整数と多倍長整数がシームレスなので1を32桁左にビットシフトすると0ではなく2^32になってしまう。これは、ひとつ…

最小全域問題をプリム法で解く

最小全域木問題を学習中。プリム法を使って最小全域木を求める。応用が広いみたい。以下の平面座標上の点の最小全域木を求める。 a = (18, 25) b = (36, 50) c = (36, 27) d = (46, 37) e = (73, 37) f = (65, 12)それぞれのノードが、自分を除く全てのノー…

pythonでクロージャを渡して順列生成

組み合わせを解く問題をやるときに毎回コーディングするのは面倒だ。一般的なコード書こう。個のシーケンスseqの中から個を選び出す順列を生成する。 # permutation.py def default_term(x): return [x] def default_concat(x, y): return [x] + y def kperm…

オイラー関数のメモ化 素数表つき

オイラー関数のメモ化まずはメモ化しない愚直なコード # euler.py def gcd(x, y): while y != 0: x,y = y,x%y return x def euler(n): if n==1: return 1 cnt = 0 for i in xrange(1, n): if gcd(n, i) == 1: cnt += 1 return cnt def main(): for n in xran…