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

[dennou-ruby:003110] Re: NArrayMiss#[] の masking 対応



神代です.

すみません, 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