神代です. 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