>From: IKEGAMI Daisuke <daisu-ik / is.aist-nara.ac.jp>
>Subject: [ruby-math:00479] Re: NArray#==

> require 'narray'
> p (NArray[0]==NArray[1])          #=> 'NArray.byte(1)\n[ 0 ]'
> p (NArray[0, 1] == NArray[1])     #=> 'NArray.byte(2)\n[ 0, 1 ]'
> p (NArray[0] == NArray[1, 0])     #=> 'NArray.byte(2)\n[ 0, 1 ]'
> p (NArray[0, 0] == NArray[0, 1, 0]) #=> Array size mismatch
> 
> は、作者の方の意図とあってますか。サイズが 1 の NArray との比較は
> 例外的にふるまうように作られています。 試した NArray の version は 0.5.3 です。

あってます。これは比較と四則演算にあてはまります。
ある次元において、一方のNArrayのサイズが1、他方のサイズが複数のときは、
サイズ1の方の要素が繰返し使われます。もとはNumPyから来てます。

% irb -r narray
irb(main):001:0> a=NArray.int(3,1).indgen!
NArray.int(3,1): 
[ [ 0, 1, 2 ] ]
irb(main):002:0> b=NArray.int(1,3).indgen!
NArray.int(1,3): 
[ [ 0 ], 
  [ 1 ], 
  [ 2 ] ]
irb(main):003:0> a==b
NArray.byte(3,3): 
[ [ 1, 0, 0 ], 
  [ 0, 1, 0 ], 
  [ 0, 0, 1 ] ]

田中昌宏