Progress of Ruby/Numo: Numerical Computing for Ruby
- masa16tanaka
- 1617
- 3
- 1
- 0
values_atが a[[1,2,4]]なのかーおもろい #rubykaigi #rubykaigiB
2017-09-19 16:51:36NArrayのメリットは簡潔であることと、速度が速いこと #rubykaigi #rubykaigiB
2017-09-19 16:51:49あー、a[2,3,4] とかって ruby 書けないから a[[2,3,4]] になってしまうのか #rubykaigib
2017-09-19 16:52:19Numoを使うと、2つの配列の各要素足し合わせをzipを使わず書ける。またNativeCodeになるのでベンチマークでは230倍高速だった。 #rubykaigi #rubykaigiB
2017-09-19 16:52:28Numoは、Mathに相当するNMath Moduleも提供している #rubykaigi #rubykaigiB
2017-09-19 16:53:09Sliceをviewにできる。sliceは単なる参照になるので、書き込むとslice元が変わる。これによりメモリ領域やコピーコストを節約できる。 #rubykaigi #rubykaigiB
2017-09-19 16:54:28a配列の特定部分を切り出した配列bをviewと呼ぶ。b配列(view)はa配列の特定の部分を参照している #rubykaigi #rubykaigiB
2017-09-19 16:54:46broadcasting。次元ごとに要素を取り出して演算を行う感じ。[[a, b]] * [[x], [y]] が[[a*x, a*y], [b*x, b*y]]みたいになる。 #rubykaigi #rubykaigiB
2017-09-19 16:56:18Maskingを使用して、ある条件がtrueとなる値のみ処理することが簡単にできる #rubykaigi #rubykaigiB
2017-09-19 16:57:00a = Numo::Dfloat[-1, 1, -3, 4]; a < 0 #=> [1, 0, 1, 0]みたいにできるの、ステップ関数実装するのに便利そう #rubykaigiB
2017-09-19 16:57:14Comparable じゃなければ > とかもbool返すんじゃじゃなくていい、か。なるほど。 #rubykaigi #rubykaigiB
2017-09-19 16:58:04NMatrixはNumPyに代替できない。Broadcasting, Maskingとcoerceが使用できないため。 #rubykaigi #rubykaigiB
2017-09-19 16:58:17Maskingのところ聞きそびれた。NArrayと同様のライブラリにNMatrixがあるが、View on Slice以外の機能がなく開発も終了している。 #rubykaigi #rubykaigiB
2017-09-19 16:58:40加算性能などで見てもNMatrixはNArrayより3桁~5桁レベルで遅い。 #rubykaigi #rubykaigiB
2017-09-19 17:00:17Numo::Linalgは線形代数のModuleだが、実態はBLAS/LAPACKのラッパーである #rubykaigi #rubykaigiB
2017-09-19 17:00:35Numo::Linalgは背景知識が足りてないから理解しきれなかった。Numo::GSLは既にRuby/GSLがあるが、手書きのラッパでメンテナンスが大変そうなので別に作った。 #rubykaigi #rubykaigiB
2017-09-19 17:03:32筑波大の高橋先生の名前が(高速フーリエ変換実装の話) #rubykaigib #rubykaigi
2017-09-19 17:06:12