[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002399] Re: gpview, and max, min



堀之内です。

> > 本来は NArray にそういう機能をつくるのがベストだと思うのですが、
> 
> 最低限 1 次元 index を n 次元 index に変換する機能をつければ
> いいのでしょうかね. そしたら max, min だけでなく
> ある範囲の値をもつ場所のリストなんかも作れそうで嬉しいかも.

それもあるといいですが、気にしてるのは実行効率で、max, min, median
を求める際、その場所もわかるようになってれば無駄がなくて
いいということです。あとから where で探すのは非効率なので。
正規表現の場合の $1, $2,... みたいに、後から調べられるように
なってるといいかと。ほかには min,loc = NArray#min_with_loc 
とか loc = NArray#minloc (Fortran90風) のようなメソッドを作る
という手もあります。最後のは別立てなので、whereのほうがむしろ
いいかも。

ちなみに 1D -> 多次元の添え字変換は、よほど高次元でない限り
Ruby でも効率悪くないですから、後づけでメソッド定義すれば
いいでしょう:

class NArray
  def idx1d2idx(idx1d)
    idx=Array.new
    shape.each_with_index{|len,d| idx1d,idx[d] = idx1d.divmod(len)}
    idx
  end
end


Takeshi Horinouchi  --  horinout@xxxxxxxxxxxxxxxxxx
Research Institute for Sustainable Humanosphere
Kyoto Univ., Uji, 611-0011, Japan
phone:+81-774-38-3812  fax:+81-774-31-8463