Python

コンソールで確率分布表示[7/13/2012] Challenge #76 [intermediate] (Probability graph) : dailyprogrammer

問題 Challenge #76 (Probability graph) : dailyprogrammer low から high までの出力を持つ関数 f を tests 回実行した時の確率分布を出力する。 def two_dice(): return random.randint(1, 6) + random.randint(1, 6) def graph(f, low, high, tests): pa…

matplotlibでランダムウォークをアニメーション

matplotlibのanimation.FuncAnimationを利用すると(それなりに)簡単にアニメーションを作ることができる。animation ― Matplotlib v1.1.0 documentation使い方は次のようになっている。 class matplotlib.animation.FuncAnimation(fig, func, frames=None,…

Python & matplotlibでソートアルゴリズムを可視化

主語を大きく括った割にバブル、挿入、クイックの三種類しか用意してないです。参考:python - Updating a matplotlib bar graph? - Stack Overflow テンプレート import matplotlib import matplotlib.pyplot as plt import numpy as np from random import…

シャッフリングのためにlist.sort(rand)したらうまくいかなかった話

流れ Pythonでsort by randomしようとしたら偏りが出てうまくいかなかった。 シャッフルの偏りはsortの実装に依存しているらしい。 Rubyではsort_by{rand}すれば「ちゃんと」シャッフルできるっていう話じゃなかったっけ? シュワルツ変換というものがあるら…

Pythonのデコレータ(decorator)を理解する 3

承前:Pythonのデコレータ(decorator)を理解する 2 デコレータに引数を渡す 素晴らしい、ではデコレータ自身に引数を渡すにはどうしたらよいのだろうか? さて、デコレータは引数として関数を受け入れる必要があるのでちょっとやっかいだ。デコレータに直接…

『Pythonゲームプログラミング入門』のコードを気取った感じに書き直す

itertoolとかmapとかzipとかを使って。 P98 リスト4-1 すべての色を含む画像の生成(allcolors.py) 元のコード。三重ループなのでネストが深くなってしまっている。 import pygame from itertools import product pygame.init() screen = pygame.display.set_…

PythonでA*(A-Star)アルゴリズムによる迷路探索

人材獲得なんちゃらとかいう少し前に流行った問題を解いてみる。時代おくれの人間。 といっても書いたコードはPythonでA*(A-Star)アルゴリズムに多くを負っている。 実践 処理手順や変数名および関数名はwikipedia:A*に準拠している。一応。評価関数を無駄に…

Pythonのデコレータ(decorator)を理解する 2

承前:Pythonのデコレータ(decorator)を理解する 1 デコレータ詳説 先の例に対して、デコレータ構文を使うと次のようになる: @my_shiny_new_decorator def another_stand_alone_function(): print "Leave me alone" another_stand_alone_function() #出力: …

Pythonのデコレータ(decorator)を理解する 1

StackOverFlow:Understanding Python decoratorsに対するe-satis氏によるデコレータの丁寧な解説。 一つエクスキューズしておくと、翻訳の作法とかよく分かってません。でも頑張ったつもり。つもり。 Imran氏による質問の内容 @makebold @makeitalic def say…

generatorで素数

プログラミングHaskellの take 100 primes みたいな書き方にいたく感動したので。 とりあえずitertoolの中にtakewhileというのを見つけたのでそれに合う書き方をしてみた。 takewhile(lambda x: x < 100, sieve()) このように書いて100以下の素数リストを手…

日本語圏のTwitterにおけるツイート長さ分布を調べた

概要 やったことは表題の通り。 データの取得方法はStreaming APIを利用してPublic Timelineを流れた日本語(ひらがな)を含むツイートを保存した。 総ツイート数は100124、期間は途中タイムアウトなどで接続が切れたりして連続していないが12.4.17の16時〜2…

itertools.groupbyを使ってみる

Rubyの先頭のアルファベット別に要素をグループ分けするサンプルを書き換えてみる。 が、ちょっとコケた。 groupbyの挙動を見てみよう。 from collections import defaultdict from itertools import groupby animals = ["cat", "bat", "bear", "camel", "al…

言語処理100本ノック・第2セットを始めるために

Twitterをスクレイピングしている(現在進行形)。python-twitterをインストールしてPublic Timelineを得る次のようなコードを書いた。 # -*- coding: utf-8 -*- import twitter import re import time f = open("tweets.txt", "a") wait = 90 while True: a…

言語処理100本ノックに挑戦(第1セット)

言語処理100本ノックより。 (1) print len([line for line in open("./address.txt", "r")]) (2) import re print re.compile("\t").sub(" " ,file("./address.txt", "r").read()) (3) col1, col2 = zip(*[line.split("\t") for line in open("./address.txt…

ジョイス「Ulysses」の語彙を測定する

wikipedia:Ulyssesによれば、ユリシーズの語彙は30030(出典 Analyzing Ulysses)である。しかしこの出典のリンクが死んでいて測定に使われたというプログラムのコードを読むことができないため、自分で調べることにした。結論:だいたい30000くらいであって…

Wallis(ウォリス)の公式によるπの計算

Python scientific lecture notesの演習より。書いた直後に答えが載っていることに気づく。 式はwikipedia:ウォリスの公式の下の方に。 # -*- coding: utf-8 -*- import math print "真値" , math.pi my_pi = 2.0 * reduce(lambda a,b: a*b, [4.0*(i**2)/(4.…

matplotlibによるガンマ関数の描画

参考:Wikipedia:Gamma Function ガンマ関数って? これ。ただの階乗なんだけど実数や複素数を考慮すると面白いものが見えてくる。 何が見えるの? 一般式 まず実数範囲のグラフ。 普通にラインを引くと発散している箇所がつながってしまうので点描のグラフ…

try:...except ImportError:...イディオム

Processing XML in Python with ElementTreeを読んでいた時に気になりググった。 次のように書く。 try: import module.NewModule as aliasName except ImportError: try: import module.OldModule as aliasName except ImportError: """Error Handling""" I…

numpy+matplotlibでトロコイド曲線

wikipedia:トロコイドを参考にして。数式打ち込むだけで芸はない。 Trochoid import numpy as np from matplotlib import pyplot as plt RANGE = 0.001 rm = 1. rds = [1./5., 1./2., 1., 2., 3.] sita = np.arange(-8., 8., RANGE) for rd in rds: x = rm *…

numpy+matplotlibでフレネル積分

wikipedia:フレネル積分を参考に。なんでやろうと思ったのかド忘れしたのでいろいろ雑。 from matplotlib import pyplot as plt import numpy as np from scipy.integrate import quad MIN_X = 0. MAX_X = 5. RANGE = 0.001 T = int(MIN_X/RANGE) t = np.ara…

numpy+matplotlibで正規分布

wikipedia:正規分布の図を参考に。正規分布(の理論値)はGnuplotやRのプロッタなど新しいツールを使うさい初めに描くことにしている。変数の名前があまり可愛くない。 import numpy as np from matplotlib import pyplot as plt sigmas = [0.2, 1.0, 5.0, 0…