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

Python 3でfunctools.lru_cacheを使って簡単にメモ化再帰

Google Code Jamの公式解説 Dashboard - Round 1B 2014 - Google Code Jamを読んでいて、Python 3には簡単にメモ化再帰する機能が標準ライブラリに含まれていることを知りました。以下、簡単な解説です。 フィボナッチ数を求める再帰関数 お題として、n番目…

PyQt5で、Yahoo! 形態素解析の結果を表示するアプリを作成

PyQt5の練習の続き。もう少し実用的な例として、Yahoo! 形態素解析の結果をWebを通じて取得し、テーブルに表示するアプリを作成しました。 実験環境 Win7 Pro + Python 3.4.3 + PyQt5 アプリのスクリーンショット 最上部には、ご利用ガイド - Yahoo!デベロッ…

PyQtで100個のスライダーを並べる

PythonのGUIツールキット PythonでGUIアプリを作るためのライブラリを調べました。QtのPythonバインディングとしてはPyQtとPySideが有名なようです。特徴を比較すると以下のようになります。 ツールキット 開発元 ライセンス 備考 PyQt4 Riverbank Computing…

C++11のラムダ関数の簡単なまとめ

C++

C++11で導入されたラムダ関数を使えるようになるための簡単な覚書です。 ラムダ関数とは? 名前のない関数のことです。無名関数と呼ばれることもあります。 わざわざ関数を定義するほどのこともない、ちょっとした処理を行いたいときに使われることが多いで…

日本国憲法前文をMarkdownで書き直す

日本国憲法前文といえば、しばしば悪文の代表例としてやり玉に挙げられることがあります。例えば以下の一文を見てみます。 われらは、いづれの国家も、自国のことのみに専念して他国を無視してはならないのであって、政治道徳の法則は、普遍的なものであり、…

Pythonで (-N//2) と (0-N//2) は同じにならない

Be careful: (-N//2) and (0-N//2) を見ていて混乱した話です。 問題のコードを実行 まず、上記リンクで話題になっているコードを動かしてみます。 N = 99 print(-N//2) print(0-N//2) をPython 2またはPython 3で実行すると、以下の結果が出力されます。 -5…

C++で1文字の繰り返しからなる文字列を作る

C++

C++で"aaaaa"などのように単一文字の繰り返しからなる文字列を簡単に作るには、以下のようにstringクラスのコンストラクタを利用します。 #include <string> ... std::string(5, 'a') ... これは、「長さ5の文字列を作り、'a'で埋める」という意味になります。 例と</string>…

Pythonで2変数関数に対してニュートン法を用いる

前回、Pythonで2変数関数に対して最急勾配法を用いる - minus9d's diaryにて、2変数関数に対する最急勾配法を Pythonで実装しました。 今回は、最急勾配法よりも収束が早いと言われるニュートン法を実装してみます。私の理解が正しければ、ニュートン法では…

Pythonで2変数関数に対して最急勾配法を用いる

以前、Pythonで最急勾配法を実装し、グラフを描く - minus9d's diary という記事にて、1変数関数に対して最急勾配法を用いて極値を求める実装を紹介しました。 今回の記事では、2変数関数に対して同じことをやってみます。目的関数はです。紙と鉛筆で極値を…

matplotlibをオブジェクト指向スタイルで使う その1

Matlabスタイルとオブジェクト指向スタイル matplotlibは、以下のようにmatplotlib.pyplotに属する関数を順番に呼んで使われることが多いです。 import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('some numbers') plt.show() これはMatlabで…

Pythonで最急勾配法を実装し、グラフを描く

最急勾配法(gradient method)は、ある目的関数の極値を求める方法の一つです。勾配がもっともきつい方向にを少しずつずらしていく方法です。極大値を求める場合は再急上昇法(gradient ascent method)、極小値を求める場合は最急降下法(gradient descent meth…

一変数関数、多変数関数の凸性を求める方法

機械学習の教科書「言語処理のための機械学習入門 (自然言語処理シリーズ) 」を再び読み始めました。勉強したことを忘れないように、メモがてらなにか書いていこうと思います。 今回は関数の凸性、つまりある関数が上に凸か、下に凸か、もしくはそのどちらで…

zshで、コマンドライン実行時にもコメントを使えるようにする

zsh

zshで過去のコマンド履歴を検索する機能(数文字タイプしてCtrl + R)を頻繁に使う人なら、自分の打ったコマンドにコメントを打って検索のキーワード代わりにしたいことがあるかもしれません。例えばこんな風に: ls -1 # print one entry per line しかし普…

Pythonのループはelseを持てる

Pythonのforループやwhileループは、elseを持つことができると聞いて驚きました。例えば以下のコードは合法です。 for i in range(5): print("i = ", i) else: print("loopは無事に終了しました") 実行例は以下です。 i = 0 i = 1 i = 2 i = 3 i = 4 loopは…

Pythonのsort(), sorted(), reverse(), reversed()の使い方

いまだに混乱してしまうのでメモ。Python3でテストしていますがPython2でも同じはずです。 sort() list.sort()という形で使います。元のリスト自体の中身が変わります。Rubyでいう「破壊的メソッド」にあたります。 nums = [2, 4, 1, 6] nums.sort() # 破壊…

Kindle for Androidで画面回転をロックまたは許可する方法

AndroidのKindleアプリで画面回転をロックまたは許可するには、本を開いた状態で画面の右下をタップします。 すると上図のように錠前アイコンが現れます。錠が外れた状態だと画面を自由回転でき、錠がはまった状態だと画面がロックされます。 どうも開く本の…