[ディスカッション]
 より良いNumPy/SciPy
コーディングスタイルとは?

    Tokyo.SciPy#2
     2011.10.15
進め方
• コードを見ながらディスカッション
• アンケート結果を見ながらディスカッション
進め方
• コードを見ながらディスカッション
 – Q3: Sum with NaN and Inf
 – Q4: Missing values in ndarray
 – Q5: 1-of-K representation
 – Q6: Useful snippets
• アンケート結果を見ながらディスカッション
進め方
• コードを見ながらディスカッション
• アンケート結果を見ながらディスカッション
Q1:お使いのNumPy/SciPyの
      開発環境(IDE)はどれですか?
• 4票
  – Emacs
• 1票ずつ
  –   Vim
  –   Eclipse+PyDev
  –   秀丸+Python 対話環境
  –   pycharm
  –   Spyder
  –   BBEditとIDLE
pycharm
spyder
Q2
同じ処理をRで書く場合に比べて、コーディン
 グ行数はNumPyの方が短いですか?

同じ処理をRで書く場合に比べて、コーディン
 グ時間はNumPyの方が短いですか?

Pythonの言語仕様(インデント強制等)は数
値計算にNumPy/SciPyを利用する上でプラス
        だと思いますか?

可能な限りForループでなくインデクシングや
   スライスで処理していますか?

       行列計算にはnumpy.matrixでなく
       numpy.ndarrayを使っていますか?

NumPy/SciPyと周辺ライブラリ(Matplotlib等)
実務での使用に耐えうる性能・機能・成熟度
      のコードを書いていますか?

                                   0%    20%   40%   60%   80% 100%
                             はい         どちらとも言えない     いいえ    わからない
Q8. 他言語からソースコードの移植を
 考えたときに、困った経験があれば教えて下さい。

• R から持ってくるとき、1-origin => 0-origin が
  たまにハマる。
• Cythonを使う際にCの配列(double *x)と
  numpyのndarrayの相互変換。
• intのサイズが異なることでバグを引き起こし
  たことが問題といえば問題でした.これは
  Python同士でもOSや環境の32bit/64bitでも
  引き起こすので,明示的に型を指定する必要
  がありますが,慣れないうちははまりました.
Q8. 他言語からソースコードの移植を
 考えたときに、困った経験があれば教えて下さい。

• matlabからnumpyへのソースコード移植の際、
  lapackのうち,一部の関数しか numpy へポートさ
  れていないことが理由で gsvd (generalized
  singular value decomposition) や csd ( cosine-
  sine decompositoin) が即座に利用できなかったこ
  と。この時 lapack を f2py でコンパイルし直したが、
  非常に時間がかかって面倒な思いをした。 凝った
  特殊関数や線形変換になると直ぐに利用できなくな
  る点が面倒。
• あと、wavreadやwavwriteに近い関数群が微妙な
  制約(32bit float のwavが読めないなど)があったり
  など、ちょっとした部分で手間がかかる。

111015 tokyo scipy2_ディスカッション