[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000081] Re: gtrb & multi-D array
沼口です.
> 問題はないと思います。
> 1. 一次元配列 「一次元扱い」と「多次元」扱いが一致するので問題無い
> 2.2次元以上 例えば 10x10 の2次元配列を考えると
ええ,それはわります.問題は,1次元の場合と2次元の場合で考え方が
異なるのがちょっと気持悪いかな..って程度.
a[19] とか a[-1] とか指定してした場合に,
もともとが1次元なら,この1次元目が cyclic な属性を持つか否かに
よって,a[9]を示すか,nil を示すかを判断したいのだけれど,
もともとが多次元なら,(それぞれの次元の cyclic 属性とは別に)
全体の添字が cyclic な属性を持つか否かで判断しなければいけない,
という考え方の違いが.
このあたりもっと気持良く行くには,アクセス方法を変えて,
a.oned[0] <==> a[0,0]
a.oned[99] <==> a[9,9]
a.oned[-1] <==> a[-1,-1] == a[9,9]
a.oned[-2] <==> a[-2,-1] == a[8,9]
のようにすればいいでしょうか.でも,oned[] なんて名前のメソッドは
定義できないはず.でも,() より [] のほうがいいし,このために
下位クラスを作るべきでしょうか...(ひとりごとモード)
あと,
idx=p.where{|i| i>0}
self[idx]=self[idx]*(p[ idx+[0,1,0] ]/p[idx])**K
なんてことができたほうがうれしいですね
(2次元めをひとつずらしたものを扱う).
この場合,idx はベクトルのほうがよい.
もちろん,
idx=p.where{|i| i>0}
self[idx]=self[idx]*(p.shift(0,1,0)[idx]/p[idx])**K
でもいいのですが.これならidx がスカラーでも問題はないか..
--
沼口 敦@北海道大学大学院地球環境科学研究科 大気海洋圏環境科学専攻
tel:011-706-2365 fax:011-706-4865 〒060-0810 札幌市北区北10条西5丁目
numa@xxxxxx