matplotlibの使い方メモ
投稿日: 2013/02/27 カテゴリー: メモ, programing, 全投稿 | Tags: メモ, matplotlib, numpy, programing, pylab, python, scipy コメントするhttp://www.ike-dyn.ritsumei.ac.jp/~uchida/scipy-lecture-notes/intro/matplotlib/matplotlib.html
http://d.hatena.ne.jp/y_n_c/20091122/1258904025
http://funini.com/kei/py/pylab.shtml
ipython -pylabってするといちいちimport とか show() とかしなくてもよくなる
もっとpythonとrの人 (主にpythonの人がrの人に対して) 友好的になって欲しい…
あ、卒研発表無事終わったし多分卒業出来ます (めでたしめでたし)
Numpy.savetxtでcsv出力をする方法
投稿日: 2013/02/02 カテゴリー: programing, python, 全投稿 | Tags: csv, numpy, programing, python, savetxt コメントするimport numpy #行列生成 a = numpy.eye(10) #保存 numpy.savetxt("a.csv", a, fmt="%.0f",delimiter=",")
これだと
1,0,0,0,0,0,0,0,0,0 0,1,0,0,0,0,0,0,0,0 0,0,1,0,0,0,0,0,0,0 0,0,0,1,0,0,0,0,0,0 0,0,0,0,1,0,0,0,0,0 0,0,0,0,0,1,0,0,0,0 0,0,0,0,0,0,1,0,0,0 0,0,0,0,0,0,0,1,0,0 0,0,0,0,0,0,0,0,1,0 0,0,0,0,0,0,0,0,0,1
ってファイルが出力される。
delimiterってのが数値の区切り文字で、今回はcsvなので “,” を選択。
fmtってので小数点以下何位まで出力するか選べる。%0.5fだと小数点以下5桁まで出力。fの他に指数表記のeも選べる。デフォルトは”%.18e”で小数点以下18桁目+eによる指数表記かな?
あとnewlineを指定すると改行文字が指定できる。デフォルトは”\n”
pythonでfinite field
投稿日: 2013/01/26 カテゴリー: programing, python, 全投稿 | Tags: ガロア体, Galois, numpy, NZMATH, programing, python, Sympy, 有限体 コメントする有限体上の行列の計算をpythonでやりたい。
有限体上の計算は普通の計算と少しやり方が違うので、pythonで演算子が呼ばれた時に読み出される特殊メソッドを書き換えてやれば良いはず。
行列の計算は今までnumpyを使っていたのでこれをそのまま使う。
numpyのndarrayクラスを継承して__add__とかの特殊メソッドを書き換えればいけるかと思ったけど上手くいかなかった。
#!/usr/bin/env python # -*- coding: utf-8 -*- import numpy class asdf(numpy.ndarray): def __add__(self, x): return 0 def __mul__(self, x): return 1 a=numpy.arange(16).reshape(4,4) b=numpy.arange(16).reshape(4,4) """ >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> b array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) """ print a+b print a.dot(b) """ >>> print a+b [[ 0 2 4 6] [ 8 10 12 14] [16 18 20 22] [24 26 28 30]] >>> print a.dot(b) [[ 56 62 68 74] [152 174 196 218] [248 286 324 362] [344 398 452 506]] """ a=asdf(shape=a.shape, buffer=a, dtype=a.dtype) b=asdf(shape=b.shape, buffer=b, dtype=b.dtype) """ >>> a asdf([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> b asdf([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) """ print a+b print a.dot(b) """ >>>print a+b 0 >>> print a.dot(b) [[ 56 62 68 74] [152 174 196 218] [248 286 324 362] [344 398 452 506]] """
どうやらdot関数はそのインスタンスの__add__とかを呼び出して使ってるわけではないみたい。
numpyと有限体を扱うモジュールのGaloisってのを組み合わせて同じようなことをやってる人がいたけど、この人もうまくいってないみたい。
Can I use my own Python class with numpy or some other matrix library?
同じ有限体とかを使えるNZMATHってモジュールをみつけたけど、これは使い方がよくわからない
NZMATH
ドキュメント読んでもコードがこれっぽっちも出てこないし解説する気が見えてこない…
あとあんまり関係ないけど面白そうなの見つけました
Sympy
SymPy は記号計算を行うための Python のライブラリである。Python を使った離散事象のシミュレーション言語 SimPy (en) と混同されやすいが、別のものである。 計算機代数システム (computer algebra system, CAS) として完備することを目的として開発が進められているが、拡張性を損なわないように、ソースコードは可能な限り簡素に保たれている。SymPy はすべて Python で書かれており、他の外部のライブラリは、オプションとしてのプロット機能以外には、何も必要としない。
ふーむ
pythonで指定したディレクトリ以下のコードを読み込んで検索(ついでに開く)
投稿日: 2013/01/24 カテゴリー: programing, python, 全投稿 | Tags: numpy, programing, python コメントするどうしてもnumpyのndarray同士のdot関数を書き換えたかったのだけれどもドキュメント見てもどんな計算してるのかわからない。
numpy.source(numpy.dot)してもソースコードが見れない!
ので力ずくで探した
hoge.py
import os, sys for dpath,dnames,fnames in os.walk(sys.argv[1]): for fname in fnames: fullpath = dpath+"/"+fname for line in open(fullpath, "r"): if line.find(sys.argv[2]) != -1: print fullpath
これでターミナルで
python hoge.py ディレクトリ “文字列”
とするとディレクトリ以下のファイルを読み込んで文字列を検索してくれる。
ただし2列にまたがってたりすると検索されない。
python hoge.py /Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/ "def dot"
で実行すると
/Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/distutils/misc_util.py /Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/ma/extras.py /Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/oldnumeric/ma.py /Library/Python/2.7/site-packages/numpy-1.8.0.dev_3abd869_20121222-py2.7-macosx-10.8-intel.egg/numpy/oldnumeric/ma.py
とりあえず全部 openしてみるとextras.pyにそれらしきものがあった。
全部openするにはさっきのコードでprint fullpathってところの次にos.system(“open “+fullpath)って付け加えればいい。
めでたしめでたし。
研究室のサーバー(RHEL4)にnumpyをインストールしたかった
投稿日: 2013/01/21 カテゴリー: 全投稿 | Tags: インストール, numpy, redhat コメントするwebで調べつつやってたけど、リンク切れとかしまくっててどうしたら良いのかわからないから一応メモ
ここを参考に
pythonは2.7がはいっていた
↓
sudo pip install numpy
しかしfortranが入ってない
↓
sudo apt-get install libatlas-base-dev gfortran
apt-getが入ってない!
↓
sudo yum install apt
yumが入ってない!
↓
yumをインストール
http://d.hatena.ne.jp/ZIGOROu/20061217/1166377279
よくわからなかったのでこの通りにすべてやる
↓
動かない
http://dag.wieers.com/rpm/FAQ.php#B4
sudo rpm -Uhv http://apt.sw.be/redhat/el4/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm
http://apt.sw.be/redhat/el4/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm を取得しています
Preparing... ########################################### [100%]
file /etc/smart/channels/rpmforge.channel from install of rpmforge-release-0.3.6-1.el4.rf conflicts with file from package rpmforge-release-0.3.6-1.el4.rf
file /etc/sysconfig/rhn/sources.rpmforge.txt from install of rpmforge-release-0.3.6-1.el4.rf conflicts with file from package rpmforge-release-0.3.6-1.el4.rf
rpmforge-release-0.3.6-1.el4.rfが重複かなんかしてる?
↓
sudo rpm -e rpmforge-release-0.3.6-1.el4.rf
rpmforge-release-0.3.6-1.el4.rfを消したっぽい
↓
もっかい
sudo rpm -Uhv http://apt.sw.be/redhat/el4/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm
http://apt.sw.be/redhat/el4/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm を取得しています
Preparing... ########################################### [100%]
1:rpmforge-release ########################################### [100%]
なんかはいったっぽい
↓
sudo rpm -Uhv http://apt.sw.be/redhat/el3/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el3.rf.x86_64.rpm
http://apt.sw.be/redhat/el3/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el3.rf.x86_64.rpm を取得しています
Preparing... ########################################### [100%]
package rpmforge-release-0.3.6-1.el4.rf (which is newer than rpmforge-release-0.3.6-1.el3.rf) is already installed
↓
もっかいこの通りにyumをインストール
http://d.hatena.ne.jp/ZIGOROu/20061217/1166377279
↓
動かない
equired to run yum. The error leading to this problem was:
/usr/lib/python2.3/site-packages/cElementTree.so: cannot open shared object file: No such file or directory
多分いれたElementTreeのがちがう?
↓
http://pkgs.repoforge.org/python-elementtree/
を確認してRHEL4 and CentOS-4 x86 64bitのやつをいれる
yum動く!
↓
sudo yum install apt
apt-getできる!
↓
sudo apt-get install libatlas-base-dev gfortran
E: パッケージ libatlas-base-dev が見付かりません
↓
リポジトリとかが入ってないっぽい?
もう疲れました…
参考
http://d.hatena.ne.jp/ZIGOROu/20061217/1166377279
http://dag.wieers.com/rpm/FAQ.php#B4
http://ayo.freshrpms.net/