意味悲鳴

PythonとかUnityとか.技術ブログでしたが,研究ブログにシフトしました.

Python3で配列の要素についてランキングを作って云々する

http://pythonhosted.org/ranking/ これ使う,以上. でも良かった気がするんですけど,だいぶ前のものでメンテもされていないっぽいので,今回はscipyのrankdataを使って,配列のランキングを拾ってきて,n位の要素を取得するみたいなことをしてみたいと思います.素人だからあんまりまともに取り合わないこと.

In[2]: from scipy.stats import rankdata
In[3]: import numpy as np
In[4]: array = np.array([8,6,9,4,5]) # これ使う

早速rankdataを使ってみる.

In[5]: rank = rankdata(array)
In[6]: rank
Out[6]: 
array([ 4.,  3.,  5.,  1.,  2.])

ここでお気づきの方もいるかもしれませんが,順位が照準になっています.しかもこれ,オプションとかで指定できません.ぐぬぬって感じです.

もうこれだったら普通にsorted使ってソートしてインデックス指定すればそれで終わりで良くないっすか?という気分になると思うんです.配列の要素がtupleのときとか対応できないっぽいし.私も今そう思っています.

が,一応これを使うメリットがまったくないわけでもなくて,リスト内に同じ要素が存在していた時,それをうまい具合に順位付けしてくれます.

ドキュメントから引用してくると,

>>> from scipy.stats import rankdata
>>> rankdata([0, 2, 3, 2])
array([ 1. ,  2.5,  4. ,  2.5])
>>> rankdata([0, 2, 3, 2], method='min')
array([ 1.,  2.,  4.,  2.])
>>> rankdata([0, 2, 3, 2], method='max')
array([ 1.,  3.,  4.,  3.])
>>> rankdata([0, 2, 3, 2], method='dense')
array([ 1.,  2.,  3.,  2.])
>>> rankdata([0, 2, 3, 2], method='ordinal')
array([ 1.,  2.,  4.,  3.])

こんな感じで,同じ値があったら上の順位をつけるか下の順位をつけるか,それとも同じ値をつけずに順位付けするかを指定できます.これを自前で実装するのはそれなりに面倒だし,そういう意味では良いのかも?今回は使っていませんが.

で,実際使用する用途としては多分こんな感じ.

In[9]: np.where(rank == 5)
Out[9]: 
(array([2], dtype=int64),)
In[10]: array[np.where(rank == 5)]
Out[10]: 
array([9])

こんな感じでした.ちなみにPythonの普通のlistにnp.where()をぶっこむとTupleだからインデックスちゃんと指定しろって怒られるのでご注意ください.

中々使う場面無いと思うんだけど(上位n位全部欲しいとかばっかりだろうし),任意でどこが見たい!という時は便利なのでは.

PycharmでDeployment設定でハマった話

時間もないのでサクサク書いていく.

問題

  • なんかPycharm使って,コードをサーバ上にじゃんじゃか乗っけようと設定したら,「invalid relative file name」とかなんとか言われる.
  • Root Pathの…で該当のフォルダ見てみたら,なんかファイル名が言われる
  • ls -laで確認すると該当ファイルがある

原因

  • なんか言われているファイル名が原因

対処法

  • 例のファイルを消し去るのが一番の対処法
  • rm で消そうとしたけどできない
  • どうやら以降のページのように,Windows側でファイルを転送したときのゴミが残っていたらしい

stackoverflow.com

oxynotes.com

あとは動くようになっているはず.素晴らしい.

苦しくなったらブログを書こう

www.lifehacker.jp

これ読みました.確かにここに書かなくなってから研究にせよなんにせよ,もういろんなモチベーションが完全に死んだように思います. 記事によると,毎日文章を書くのもそれはそれで効果が薄いということで,タイトルの通り,苦しくなったらブログを書こうと思います.

ただ,ここ数週間,本当に苦しみしか無い.何も手に付かないしやりたくないし,それじゃマズいというのが分かっているのがなお苦しい感じがしていて,誰かにケツひっぱたいてほしい気分です.

インターンシップの課題に取り組んでいても思ったんですけど, 私はどうやら期限を作らないと,しかもその期限に強制力が存在しないと本当に何もしないみたいです.これ,本当に厄介.やらなければいけない状況にならないとやらないって,仕事やるぶんには良いのでしょうけど,裏返して言えばそれ以上のことが出来ないってことですからね.マズい.大変にマズい.なんとかせねば.

とりあえず夏休み中,インターン2社行きますけど,その間も研究っぽいことは引き続きやっていきたいですね.そうしないと本当に,終わる.人生終わる.なんとかしないと.

睡眠時間と作業効率

睡眠時間をちょっと削って頑張ったんです.そしたら昼にぶっ倒れるように寝て,その後も全然作業できずに,今日まで引きずっています. やはり規則正しい生活が大切.少しキリが悪くてもいいから,いつもと同じぐらいの時間に寝て,いつもと同じぐらいの時間に起きたほうが, 結果的に作業を続けられる時間が伸びる気がする.

無理し過ぎるのは本当に無理なときにやるほうが良いのかもしれません. 今のところその無理なところに行き着いていないので,なんとか明日頑張ります.はい.以上.

図解・ベイズ統計「超」入門を読んだ

これ読みました.私は2時間もかかりましたが,読む人が読めば1時間かからないと思います.

内容は大変易しいので私のようなド素人がベイズに入門するための本としては大変良い,と思っています.特に例題が豊富なので,私のように例題駆動で理解していく人にはおすすめです.くどいぐらいに式の説明をしまくっているので,これ読んで挫折ってことはさすがに無いんじゃないでしょうか.

ただ,本当に良い部分だけかというと全然そんなことはなくて.

大変残念なことに肝心のベイズ統計学部分(後半第6章,第7章)の解説が,なんというか,こういうのあるからこうなってこうです!みたいな,抽象的すぎるきらいがあって,これ一冊でそれらを理解することは到底不可能だと思います.正規分布の説明とか,実際に事前分布を求める計算とか,その辺がすごく雑.流れだけ分かっておいてね,という意図で書いているだけです.おそらくこの書籍の立ち位置は,ベイズ統計の書籍を読む前段階として読む本,だと思うので,そういうふうに思って読むことを強く推奨します.

私もある程度こうなることを分かったうえで買ったつもりなんですけど,想像以上に肩透かしを食らったので覚悟して買いましょう.ただ,何度も言いますけど,導入としては素晴らしいぐらいに分かりやすいです.ので,そういう人は買いましょう.以上.

英語論文読むときにWeblioと英辞郎を構文木を併用しましょう,と言う話

タイトルの通り.知ってる人にとっては当たり前の話かもしれないけども. 英辞郎は一般的な言い回しがかなり強い.例文検索は有料となっているけど,普通に使う分には十分な内容を得られる. 対してWeblioは専門的な語に強い.普通の辞書ではなかなかなさそうな英単語も日本語にしてくれる. そのまま日本語で検索すればいい感じに情報収集できる. 検索だと上位はweblioなんだけど,それだけじゃやっぱりよくないよね,と言うお話でした.

あと,構文木書くソフトを使うと,英文の構造がわけわからんって時にとっても良いです.特にand連発している時とか.

Enju - A fast, accurate, and deep parser for English