多次元の numpy.array の argmax を求めたい時は以下のようにする。
import numpy
x = [numpy.array object]
numpy.unravel_index(x.argmax(), x.shape)
なぜ?
x.argmax() は、1次元行列に変換した時の位置を返す。
numpy.unravel_index は一次元に変換した時の位置と行列の次元からその行列でいうとどの位置かを計算する。
これらを組み合わせると、もとの行列の何行何列目に最大値があるのかが分かる。
mzmttks's blog for my memorandum の略で mzrandum. Topics are: python, book review, and my hobbies.
2013年2月19日火曜日
2013年2月14日木曜日
parallel で並列処理
ちょっと必要になったので並列処理してみた。
たとえば、
find で処理するためには、よくこんな感じで処理してました。
短い場合はこれでいいんですが、ファイル数が多いなどの時間がかかる場合は
並列処理したくなります。
そこで parallel.
上と同じことを 10 並列でする場合は、以下のような感じ
たとえば、
html ディレクトリ以下のすべての .html 拡張子を持つファイルの行数を表示する。
ただし、行数を表示するたびに1秒待つ (重い処理を想定)
find で処理するためには、よくこんな感じで処理してました。
find html -name "*.html" -printf "wc -l %p; sleep 1" | shfind コマンドが、以下のようなスクリプトを生成してくれるので、
wc -l html/aaa.html; sleep 1それをパイプで sh に渡します。
wc -l html/bbb.html; sleep 2
...
短い場合はこれでいいんですが、ファイル数が多いなどの時間がかかる場合は
並列処理したくなります。
そこで parallel.
上と同じことを 10 並列でする場合は、以下のような感じ
parallel -j 10 -i sh -c "wc -l {}; sleep 1" -- `find html -name "*.tex"`-- 以下のリストを順番に {} に代入して、並列で実行してくれます。
ラベル:
tips
2013年2月7日木曜日
内輪ネタ
下書き。要推敲
あるコミュニティ内では通じるが、外では語彙 (jargon) とかエピソードのことを
内輪ネタと定義します。
で、自分がそのコミュニティに入ったときから何発話目で
そのコミュニティの内輪ネタを理解し、話せるようになるかというのは
結構いろんなところで役立つんじゃないかと思います。
という話。
早く内輪ネタを理解し、話せるようになる効用は次の通りな気がします。
1. コミュニティに馴染むのが早くなる
2. 内輪ネタの階層化
その内輪ネタがそのコミュニティ特有なのか、より一般的なのかが分かる。
3. 人の話の理解が早い
最も小さいコミュニティを個人と定義すると、相手個人の内輪ネタがわかれば
内容理解にリソースを割ける。
4. 本を読む時の理解が早い
著者の使う表現や語彙に適応できるので、内容理解にリソースを割ける。
5. 別コミュニティの内輪ネタとの類推が可能
そのコミュニティの性質がわかるかも。
受けそうな内輪ネタを作れる。
6. 自分の「常識」が本当は違うことが理解できる
当然知ってるべき「常識」は単なる内輪ネタだったりするかも
これができるためには、
1. 周りの人の会話から「理解できない語・表現」を見つけ出すこと
2. その語の用法と意味を文脈から理解すること
3. その語がコミュニティで通じているのか否かを判断すること
が必要です。
さらに、できるだけ早く内輪ネタを使い始めるには、
いちいち意味を尋ねることなく会話から判断できたい。
これって、「技術は盗め」という教訓と似ている気がしています。
いちいち教わることなく重要そうなことを抽出して身につける能力だからです。
じゃあどうすればいいか?
わからん。
あるコミュニティ内では通じるが、外では語彙 (jargon) とかエピソードのことを
内輪ネタと定義します。
で、自分がそのコミュニティに入ったときから何発話目で
そのコミュニティの内輪ネタを理解し、話せるようになるかというのは
結構いろんなところで役立つんじゃないかと思います。
という話。
早く内輪ネタを理解し、話せるようになる効用は次の通りな気がします。
1. コミュニティに馴染むのが早くなる
2. 内輪ネタの階層化
その内輪ネタがそのコミュニティ特有なのか、より一般的なのかが分かる。
3. 人の話の理解が早い
最も小さいコミュニティを個人と定義すると、相手個人の内輪ネタがわかれば
内容理解にリソースを割ける。
4. 本を読む時の理解が早い
著者の使う表現や語彙に適応できるので、内容理解にリソースを割ける。
5. 別コミュニティの内輪ネタとの類推が可能
そのコミュニティの性質がわかるかも。
受けそうな内輪ネタを作れる。
6. 自分の「常識」が本当は違うことが理解できる
当然知ってるべき「常識」は単なる内輪ネタだったりするかも
これができるためには、
1. 周りの人の会話から「理解できない語・表現」を見つけ出すこと
2. その語の用法と意味を文脈から理解すること
3. その語がコミュニティで通じているのか否かを判断すること
が必要です。
さらに、できるだけ早く内輪ネタを使い始めるには、
いちいち意味を尋ねることなく会話から判断できたい。
これって、「技術は盗め」という教訓と似ている気がしています。
いちいち教わることなく重要そうなことを抽出して身につける能力だからです。
じゃあどうすればいいか?
わからん。
ラベル:
discussion
2013年1月29日火曜日
[shell] # から始まる行を全部消して表示
targetfile というファイルの、先頭が # から始まる行を全部消してみたいとき。
設定ファイルとか、 Julius の .jconf ファイルとか。
cat targetfile | grep -v "^#" | sed "/^$/d" | lv
全部表示して、 # から始まる行を取り出して、空白行を削除。
ラベル:
tips
2013年1月13日日曜日
2012年12月29日土曜日
Octave で PsychToolbox を動かす
はじめに
PsychToolbox という、 MATLABで動く心理学実験用ツールボックスがあります。http://psychtoolbox.org/wikka.php?wakka=HomePage
最新版はバージョン3 。
日本語解説はこちら。
https://sites.google.com/site/ptbganba/
で、この PsychToolbox はフリーのMATLAB互換ソフト Octave でも動くらしい
ということで動かしてみました。
Octave on Windows で動かす
どうやらバージョンに結構依存するらしいので、最新版ではうごかないっぽいです。少なくとも、 Windows 7 で以下は動きました。
1. Octave のインストール
最新の Octave 3.6.x では動かないようです。そこで、3.2.4 をインストール。
http://sourceforge.jp/projects/sfnet_octave/downloads/Octave%20Windows%20binaries/Octave%203.2.4%20for%20Windows%20MinGW32%20Installer/Octave-3.2.4_i686-pc-mingw32_gcc-4.4.0_setup.exe/
これをダウンロードして、とりあえず全部入れる感じで。
インストールパスは C:\Octave になりました。
2. GStreamer のインストール
PsychToolbox は全画面で色々表示したりするので、そのライブラリが必要でうs。具体的には次のライブラリをインストールします。
http://code.google.com/p/ossbuild/downloads/detail?name=GStreamer-WinBuilds-GPL-x86-Beta04-0.10.7.msi
3. QuickTime のインストール
QuickTime をインストールします。
4. TortoiseSVN のインストール
最新版を入れます。これは PsychToolbox の最新版をダウンロードするためです。http://tortoisesvn.net/downloads.html
5. PsychToolbox のダウンロード
PsychToolbox は svn で公開されているので、落とします。C:\Octave\3.2.4_gcc-4.4.0 を開いて右クリックして、 SVN Checkout を選びます。
で、
URL of repository に
http://psychtoolbox-3.googlecode.com/svn/beta/Psychtoolbox/
を入力して、 OK をクリック。するとぶわーっとダウンロードされます。
6. PsychToolbox の設定
初期設定がいるので、 Octave を開いてそれを実行します。初期ディレクトリは C:\Octave\3.2.4_gcc-4.4.0\bin なので、
cd ..
cd Psychtoolbox
SetupPsychtoolbox
でなんか実行されます。
7. libusb2.0 をインストール
PsychHID という関数などは、 libusb が無いといわれる。
そこで、
C:\Octave\3.2.4_gcc-4.4.0\Psychtoolbox\PsychContributed\
以下にある、
libusb-1.0.dll
を
C:\Windows\system32
にコピーしてあげるとうごく。
8. Demo とか動かしてみる
Octave を再起動するとパスが通っているので、DotDemo
とか実行してみて、全画面で PsychToolbox とか表示されていればインストール終了。
plot 出来ない問題
このままだと、 Octave でplot([1, 2, 3])
とかを実行してもグラフが表示されません。isstr が obsolete だとか言われます。
そこで、以下を実行してplot周りの問題を解決します。
pkg rebuild -noauto oct2mat
参考 URL:
http://octave.1599824.n4.nabble.com/warning-message-in-Octave-3-2-4-td3311391.html
2012年12月28日金曜日
Brython ことはじめ
概要
Python でブラウザ上で動くプログラムを書く javascript ライブラリ。@qwerty__ に教えてもらった。
記事はこれかな。 http://www.moongift.jp/2012/12/20121227/
で、という感じで python をインタプリトしてくれる javascript が
brython らしい。
ざっと見た感じ
オフィシャルサイトはここ。http://www.brython.info/index_en.html
tgz を解凍すると色々出てくる。
カレントディレクトリに brython ディレクトリを作って、その直下に全ファイルがあるとする。
カレントディレクトリで動く最小構成の HTML はこれ。
最初の script で brython.js を読み込んで、 bodyの onLoad で brython() を実行することで
初期化してるっぽい。
alert の中身をフォーマット文字列にしてちょっと python ぽくしてみた。
brython.js を読んでみたところ、標準で呼べるモジュールはこれらしい。
'time','datetime','dis','math','random','sys'
他にも、 DOM 触ったり、local strage 触ったり、できるみたい。
トップページの時計は、 canvas に draw しまくることで実現しているようだ。
今度なんか作ってみよう。
登録:
投稿 (Atom)