神代です. すみません, NArrayMiss#[]= のほうにも同じ問題があったので, そこも変え てみました. 新しいパッチ(CVS版に適用)を添付します. 問題なさそうであれば, 取り込んでいただければありがたいです. At Wed, 08 Jul 2009 15:40:11 +0900, KOSHIRO Tsuyoshi wrote: > > 神代です. > > NArrayで, > > irb(main):001:0> require "narray_miss" > => true > irb(main):002:0> a = NArray.int(5).indgen > => NArray.int(5): > [ 0, 1, 2, 3, 4 ] > irb(main):003:0> a[a.gt(2)] > => NArray.int(2): > [ 3, 4 ] > > のようにして masking するのをよく使いますが, NArrayMiss の場合だと, > > irb(main):004:0> b = NArrayMiss.int(5).indgen > => NArrayMiss.int(5): > [ 0, 1, 2, 3, 4 ] > irb(main):005:0> b.invalidation(3) > => NArrayMiss.int(5): > [ 0, 1, 2, -, 4 ] > irb(main):006:0> b[b.gt(2)] > IndexError: not allowed type > from /usr/local/lib/site_ruby/1.8/narray_miss.rb:263:in `[]' > from /usr/local/lib/site_ruby/1.8/narray_miss.rb:263:in `[]' > from (irb):6 > > とエラーになります. 期待されるのは, 欠損のところは無視して > > irb(main):006:0> b[b.gt(2)] > => NArrayMiss.int(1): > [ 4 ] > > のような結果だと思います. 以下のパッチでどうでしょうか. > > # 現状でも b[b.gt(2).where] とすればできるのですが, NArray との整合性 > # からこのようなこともできてほしいです >
Attachment:
narray_miss_masking.patch
Description: Binary data