Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Monday, 29 July 2013

Sunday, 7 July 2013

matplotlib (1)

gnuplot もいいけど python と一緒に使うなら一度 matplotlib も触ってみましょう.
と,いう声が聞こえた気がしたので少しだけ触ってみた.
matplotlib (1) なんて大層に名乗っているがこの先続くかは不明.
numpy もそういえば,いくつか知ってるのはあるけど何ができるかの全容から言うと殆ど知らない.
多分これも宝の山なので探って行きましょう.

gnuplot の経験も少しあるし,結構充実してるようなので公式のドキュメンテーションを読んでみる.
とりあえずは Pyplot tutorial — Matplotlib 1.3.0rc2 documentation あたりからですね.
線種の指定とかそのへんすこし.
#!/usr/bin/python
import matplotlib.pyplot as plt
import numpy as np

plotrange = np.arange(0,1.01,0.05)
f = lambda n, plotrange = plotrange : plotrange ** n

plt.plot(plotrange,f(0.2) , label = 'default')
plt.plot(plotrange,f(0.5), 'v--', label = 'v--')
plt.plot(plotrange,f(1), '^-.', label = '^-.')
plt.plot(plotrange,f(2), '1:',  label = '1:')
plt.plot(plotrange,f(3), 'p-',  label = 'p-')

plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.title('title')
plt.grid(True)
plt.legend(loc=4, shadow=True)
plt.show()

で

なかなかの表現力やん.

Friday, 4 January 2013

vim - :TOhtml

実用的な記事とかも書いてみよう.

たとえばこの blog で僕の書いた tex とか python のコードを紹介したいときに,
syntax highlighting をそのままに html としてここに貼り付けたりしたい
(以前 scilab のコードとか紹介した時は,直接 copy & paste でそのあたり上手く行ったけれど,
 vim を使ったりしてるいまはそういうわけにもいかず, gedit でも駄目みたい).

なんかツールあるんかいな,とおもって調べてみると,たとえば
highlight 3.12 というソフトが見つかったりしたっぽい.
っぽいというのは実際インストールとかしてないし,
そもそも信頼できるサイトかもしらないというような話ですが,
一応 URL 紹介しておくとこちら. http://www.andre-simon.de/
Highlight converts source code to formatted text with syntax highlighting.
  • Coloured output in HTML, XHTML, RTF, ODT, TeX, LaTeX, SVG and BBCode format
  • Supports 175 programming languages
といっておられて, きちんと動くならかなり高機能っぽい.

もう少し調べてみると, vim のコマンドで
  :TOhtml
というものがあるという情報に行き着いた.早速使ってみるとかなりいい感じ.
たとえば mysource.tex を開いているときに :TOhtml とお願いすると
デフォルトでは mysource.tex.html が作られる.
 88 %_____________________________________________________________
 89 % brackets, absolute value and norm.
 90 \newcommand{\brac}[1]{\left({#1}\right)}
 91 \newcommand{\bbrac}[1]{\bigl({#1}\bigr)}
 92 \newcommand{\Bbrac}[1]{\Bigl({#1}\Bigr)}
 93 \newcommand{\bbracc}[1]{\biggl({#1}\biggr)}
 94 \newcommand{\abs}[1]{\left|{#1}\right|}
 95 \newcommand{\norm}[1]{\left\|{#1}\right\|}
 96 \newcommand{\cbrac}[1]{\left\{{#1}\right\}}
 97 \newcommand{\bcbrac}[1]{\bigl\{{#1}\bigr\}}
 98 \newcommand{\Bcbrac}[1]{\Bigl\{{#1}\Bigr\}}
 99 \newcommand{\sbrac}[1]{\left[{#1}\right]}
100 \newcommand{\bsbrac}[1]{\bigl[{#1}\bigr]}
101 \newcommand{\Bsbrac}[1]{\Bigl[{#1}\Bigr]}
102 %_____________________________________________________________

たとえばこれは僕が数学系のノートとったりするときにかなり汎用的に使ってる .sty の一部.行頭の数字は行番号です.
元々吐き出してくれる html では背景色が白なのだけれど,ちょっと見にくいのでそこは変更しました.
いくつかオプションもあって,行番号表示しないとかいろいろ.
color theme はどうも vim での表示に使われているものに一致するようで,
:TOhtml についてだけ別に theme を設定する方法があるといいとおもうのだが,
まだそこは見つけられてない.
いろんな color theme があるが,
 http://vimcolorschemetest.googlecode.com/svn/html/index-tex.html
に色々あるようなので,参考にしましょう.

Sunday, 22 July 2012

date.py

午前中に たけいさん が話にださはったのでふと思いついて,
(日付,月,年) (日付と年は integer, 月 は int または "Jan" , "Feb" など三文字略記の str)
を引数として,年初から数えて何番目かを返すプログラム(というほどのものでもないけど).
範囲外のものや型の違うのを入れようとすると i, 2i, 3i という虚数を返すようにしてみた
(ぴゅとん の表記で言うと 1j, 2j, 3j ということになる).
年(エラーなら 3i が返る)→月(2i)→日(i) の順にチェックするので,
全部予定外のものを入れるととりあえず年がエラーといって返してきます.
閏年とかも対応(副産物として ifleapyear : 閏年かどうかを返す関数).

ぐるぐるに上げてみる けどこれ .py ではプレビューしてくれないようなので
一応下に貼ってみましょうか.


Tuesday, 10 July 2012

O

さてさてお久しぶり.いまあんまりつらつら書けるほどはっきり目が醒めてないので
(そういえば昨晩の1時ごろに謎の電話がかかってきたのであった),
とりあえず箇条書き的に行きましょう.
  • LaTeX で日本語が扱えない問題が解決しつつある.詳しくは解決しきった時に書くけど,
    • Linux で普通に入る pLaTeX は EUC-JP 以外対応してない(憤怒).TeX live 2011 が,ということ. Ubuntu でいうと 12.10で入る TeX live 2012 は utf-8 に対応します.ubuntu 12.04 でも TeX live 2012 を入れる方法はあるし今はそれで使っていますが. (5 Mar 2013 追記)
      • これについては,一度保存しなおして試したことがあったはずだったのだが,i) encoding 変えたと思ったら変えられてなかった,か, ii) Terminal から直接コンパイルせず TeXworks つかった ことによって成功しなかったと思われる.
    • 一方, TeXworks の方は,どうもそもそも pLaTeX が入っていることを今のところ認識しておらず,jarticle, jsarticle いずれも読み込めず,日本語も受け付けなかったのはこういう事情によると思われる.
    • というわけで,iconv でエンコーディング変換,ターミナルから platex , pdfdvimx で変換していくと一応無事な pdf 出力が得られた.jsarticle も無事使える.
    • なお,このあたりについてはぽぽさんにご教示頂き,自動化する makefile を紹介(というかなんというか)していただいた.大変ありがたいことである.ついでに そもそも何も知らない makefile についてこういう使い方できるとは思ってなかったので,参考にしたいところ.
  • ついでに IPAex フォントをインストールしたけど (apt-cache search と apt-get はすごく便利!),埋め込み方がわからないので放置.今のところ和文はゴシック体(のように見えるもの)で表示される.
    •  マクロツイーターでの過去記事 ( TeX live, W32TeX) とかみるといいとおもうよ (5 Mar 2013 追記)
  • そういえばある程度までなら LaTeX のトラブルシュートに能力があることが示せつつあって嬉しい.
  • Vim の方は一向に未解決.そもそも一部の漢字だけは表示されることがあるとは.
  • ぴゅとん のこの前のプログラムは少し改善された.
  • ぴゅとん で素数判定/素因数分解/素数の表作るプログラム書いた.
    • 最近のPCすごい.ごく愚直なプログラムでも\(10^7\)までとかの素数をふつうに吐いてくれる.(一応 \(10^7\)までの素数表はこちら.plain text, コンマ区切りで5MB あるので注意.ちなみに gedit や notepad.exe では開けた実績がない{今のところ開けたのはvim で開いたのと python での importのみ}).
    • さらに↑の表を使って,もっとアホみたいに大きい数字を素数かどうか判定する/そして表を作るプログラムも.素因数分解はまだでおじゃる. 例えば\(10^8 \)~\(10^8+10^7\) とかも出してくれた.こちらも 5MB ある(up しませんが要望があればいつでも).素数表から割っていく数を取っていくことではやくなるかな,と思ったけど,最初にたくさん読み込みすぎるとそれはそれでよくないのかもしれない.
      • たとえば for と while とどっちがええの,とか,そういうふうに,思考の流れとしては同じ事をやってても"より速い"プログラムを書くテクニックもほしいなぁとか思ったり.今はそれ以前の問題ですが.
  • 生協の建物が耐震工事のため在庫棚卸セール:書籍15% off にまつわる話をしようかと思ったけど↑がずいぶん長いので明日か明後日かそのうち.なんせ毎日物欲を刺激されてる.とりあえず
    • グルジア語楽しすぎてグルジア語の本買った(昨日).
      • 語学って,僕もグルジア語を本当にある程度やり始めるとは思わなかったわけで,なんにせよそういうところがあるから,大きめの図書館へのアクセスがある場合は色々借りまくって,いいな,って思うのを継続的にやるのがいいのではないかと思う.
    • N.Bourbaki の éléments de mathématique : Algèbre Chapitres 1 à 3 を衝動買い(今日).だってだって.もともとセールで本当に破格だったし,そして僕は仏語選択なのだ.どれだけかかるかわからへんけどのったり読んでいこう.こういうのでノートを選ぶのも楽しいひと時.
    • メモとしては,数理神学.音声学.言語学の基本的な方法.Japanese. 政治学.
  • ごがく徒のつどい.これも後日.
  • 本読まなきゃ.

Monday, 2 July 2012

python : random questions 0.2.0-gamma

とりあえず昨日のに,終了時に .appendを長く連ねるんじゃなくて,普通に
table = [ ["one","two","three"],[ , ..............] , .... ] ] 
という形式で,ファイル名指定して出力する機能だけつけたもの.
読み出しも変えられるようにするのとかが目標(このへんで0.2 にする予定).
読み込むモジュール名を指定するのはちょっとやり方がわからないから,
モジュールのファイル上にに読み込む命令を書き込んで , reload かなぁ.
なんせ,とりあえず今は,手元にあるものを使っていく方針なので.

とりあえず 一旦 .append で ファイルに順々に書きこんでゆくのは,
例外処理が不徹底やから,途中でエラー吐いてプログラムが倒れる,ということがありそうで,
そういうときにこれまで打ち込んでいったのが水泡に帰す!……………
…という悲劇を避けるためにもしばらくはそのままになりそう.
なにかいい方法はあるのでしょう.
そもそもファイルへ変数を書きこむのもなにかちゃんとしたのがあるのかもしれません.

という訳で ver 0.2.0-gamma. 今回は .zip で.
ついでに前回のの zip を上げましょう.
ぐるぐる先生が対応してくれてるので便利.

Sunday, 1 July 2012

python : random questions 0.1.0

何もかも,あまりにもやる気にならなかった.
つらぽよやしやや後悔してるけど, だからといって他に何ができたか,というと,
やっぱり思い当たらない.

ともかく,プログラムかいたりしてみた.
決して勉強の賜物でもなく,とりあえず現在知っていることと,
こんなことができたらいいな,とおもってぐぐってすぐ出てきた分と,
を,適当に継ぎ接ぎして出来たもの.隙も多いし,碌な構文じゃないし,
名前も適当やし,
ついでに言えばまだ今この瞬間の自分としても未完成なもの.
とりあえず動くようにはなったし,一部例外処理を入れたし,
疲れたし,ほかにせなあかんことがあるし,でとりあえず今日はここで打ち止め.
記録としてここに残しておく.解説は時間的にできない/しない.
個人的に使わはる範囲でなら使っていただいて構いません(使い物になるかは別にして).
ソースを流しておくがコメントも何も殆ど無くわかりにくいことこの上ない.

一応ソースはここに. .tar.gz になってて解凍したらそのまま動く筈.


ぴゅとん で,単純な一問一答型のをランダムに出題するようなアレ.
高校の時 excel + VBA でほぼ同趣旨のを作ったやつ.
今日突然始めて一旦ここで区切り.
  • n行 3 列の表を作る.これはプログラムの中から行を加えていける.
  • 一列目と二列目が問題と答え.どっちを出題するかは変えられる.
  • で,連続で出題する回数を決める.
  • その回数だけ,ランダムな行から,一列目と二列目のうち設定されたほうを出力.
  • 答え入力.
  • 正解・不正解を表示(あるいは設定によって表示しない).
  • コメント(三列目)を表示.再び出題.
  • 回数が終わるか,「もうやめたい」といえば,問題終了.
  • やめるなり,もう一度問題出すなり,問題追加するなり.
  • 目玉として(まだ整った配色にはなってないが)出力で terminal に色つき文字を出すことができることを知った (thanks: http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=24280 )
みたいなの.ぴゅとん触るのが主目的みたいなことがあったから,
かきながら拡張したり,などして,まだまだ途上.
  • 問題を書き込むファイルは選べるようにしたけど,読み出せるのを選べるようにしてないので,そこ改善したい
  • 正解不正解の統計とかとるのもいいかもしれない
  • 例外処理のうち不十分なのを
  • 配色含めインターフェイスをましに
  • 日本語とかを処理できるかどうか
  • 問題は,ファイルの末尾に .append() を大量に書いていく感じになってるので,ガンガン重くなりそう.なにか改善すべき(まあ,本気で使おうというプログラムではないのだけれど).
  • あとデータ型よく知らないから,ともかく知ってる範囲で問題を [[question1,answer1,comment1],[question2,answer2,comment2], .... ] みたいに格納してるんやけど,きっともっといいやり方有る.
  • まあ,そんなかんじ.
とりあえず色出せるのを知ったのが大きかった.
ついでに前までよりは,関数宣言をたくさん使うことになりました.

vim 捗る. 仮想コンソール 捗る.ついでに楽しい.

Monday, 23 April 2012

maker++

ええっと,発端としてはラテン語の記事とか書く時に,
blogger のinterface は表に対応してないっぽくて,昔使ってた αEDIT は win7 64bit では動かないようで,
結局タグを手打ちしてたのだけれど,いちいち面倒くさい,ということで,
python で,最初に行数列数打ち込んで,あとはなかをシタンシターンと打ち込めば,
既定のテンプレートに従って, ([ ] 内が打ち込む所, < >内はテンプレート)

<header> < 行のはじめ> [1,1 成分]<列の間>[ 1行2列] …… <行の終わり>
<行のはじめ>[2行 1 列] ... [n行 m列]<行の終わり> <footer>
のような物を作ってくれるの書けたらいいな,
というのが コアのアイデア(丁度 python でファイル出力がやりやすいというのを知った頃でもあったので).
それにテンプレート切り替え機能とか色々つけて今に至る.
ついでに,追加したテンプレートとか,諸々の設定を保存しとけるようにしたい.
これはそうする前提で書いてあるし,手間かからずに付けられるはず.

プログラムとして全く綺麗ではない,というか,
丁度いくつか道具が手に入って,それを組み合わせればできるものも見えたから,
正しくどれをどう使うかも知らずに,楽しみと実利と,ついでにパーツを組み合わせるのの練習,
みたいな気分でやっていたに過ぎない.

内容的にも,段階的にも公開するようなものでもないが,
とりあえず「自分用メモ書き」 と断ってあることでもあるし取り敢えずここにおいておきます.
案外こうしておくとバージョン管理もだらくさでやる気なくてもできたりするしね.



ついでに google docs って enbed するとこんな感じになるのね.面白い.

Thursday, 15 March 2012

python !!

どうもねー,なんか,ブロック組み合わせる感じで,
すぐ実用的な動きをさせられそうな python  さん.
ところで,この python という名前は Monty Python's Flying Circus から来ているのであって,
へびとは関係ないらしい(そしてそれゆえ Monty Python についての話を交えるのは奨励されるらしい)けど,
それを理解した上で「へび」みたいな愛称で呼ばれたりするのはどうなんだろうか.
いや,どうなんだろうかっていうのはその,本家の人からしてどうなんだろう,みたいな.

 最近考えてるのは, i) HTML の表, i)-a)中でもラテン語の活用表とか, ii) TeX の表
などを,いちいち, <table> とか <td> とか(HTML なら), \begin{table} とか & とか(TeX),
そういうのを打たずに,内容をシターンシターンと打ち込んでいって,しかるべき形にして返してくれるようなもの.

取り敢えずコアとして使えそうなものはできてて,これは
行数,列数を最初に指定して,シターンシターンと打ち込んでいって,
current directry 内の指定されたファイル(なければ新規に作り,あれば改行して次の行から)に書き込む
というもの.この時,行内での区切りはタブコード,列の区切りは改行コードを挟む.
まださらさらっと書いただけやし,そもそも推奨されない使い方をしててなんとなく動いてるだけ,
というのもあるかも知れない(LaTeX で改行に \\ を使うような感じで).
まあ,許してくださいな.
 
columns = input("the number of columns?");
rows = input("the number of rows?");
table_contents =[];
for j in range(rows):
    table_contents.append([]);
    print("INPUT THE ROW", j+1);
    for i in range(columns):
        table_contents[j].append(raw_input(""));          
filename = raw_input("INPUT THE FILENAME (INCLUDING EXTENSION)");
print table_contents;
fla = file(filename,"a");
flr = file(filename,"r");
if(flr.read() != ""):
    fla.write("\n");
for j in range(rows):
    for i in range(columns):
        fla.writelines(table_contents[j][i]);
        fla.write("\t");
    fla.write("\n");
fla.close()
 
これの, \t とか \n のところを,別の変数に収めた文字列を使うようにして,
それを変更できるようにすると汎用性が高まる.
多分別の module を作って,そこに↑の変数を入れておいて,
そこに順次書きこむようにしたらいいよね.
最初に,「変数に書き込む」「モード変える」「表作る」みたいな分岐を作って,
そこからそれぞれ動くようにすると最初に起動したらモード変えながら使える感じになる.

Friday, 9 March 2012

python;

今日 python でいじったのを書き散らかす(ほんとに書き散らかすだけ).
http://docs.python.org/tutorial/introduction.html
とかに主に従ってます.
家のデスクトップPC使うとこのように非常に横幅の広い画面でオソロシク快適な作業ができる.
御飯食べてまた書き足すねーーー(22 時前)