[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002393] Re: gpview, and max, min
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002393] Re: gpview, and max, min
- From: Shin-ichi Takehiro <takepiro@xxxxxxxxxxxxxx>
- Date: Tue, 09 Aug 2005 10:46:07 +0900
竹広です.
オジサンも四十の手習いでちょっと試してみました.
where がヒットする場所が複数ある場合を想定してます.
でもあってんのかな? 添字の付き方が 0 からの場合は
慣れてないので不安. だれか採点して.
idx1d = gphys.val.eq(gphys.max).where
idx1d.each{|idx|
idx_array = Array.new(rank,0)
i=rank
while i > 1 do
i -= 1
interval = 1
shape[0..i-1].each{|dim|
interval *= dim
}
idx_array[i], idx = idx.divmod(interval)
end
idx_array[0]=idx
...
}
> whereメソッドは多次元配列を一次元配列とおもった時の添え字を返すみたいな
> ので、ちょっと汚いですが、こんな感じで。。。
>
> #いろいろ変数名がいまいちですが。
>
> idx = gp.val.eq(gp.max).where
> shape = gp.shape
> idx_array = Array.new
>
> (gp.shape.size - 1).times do |i|
> shape.pop
> num = 1
> shape.each do |s|
> num = num * s
> end
> idx_array.push( idx / num )
> idx = idx - num * idx_array[-1]
> end
> idx_array.push( idx % shape[0] )
> idx_array.reverse
>
> idx_arrayに各次元の添え字が入るはずです。
>
> #15行もあるなぁ。もっと短くならないですかねぇ。
- References:
- [dennou-ruby:002386] gpview, and max, min
- [dennou-ruby:002387] Re: gpview, and max, min
- [dennou-ruby:002389] Re: gpview, and max, min
- [dennou-ruby:002390] Re: gpview, and max, min
- [dennou-ruby:002391] Re: gpview, and max, min
- [dennou-ruby:002392] Re: gpview, and max, min