def narray=(narr)
      raise ArgumentError, "Invalid argument 'narray'. Expected NArray, got #{narr.class}" unless narr.is_a?(NArray)
      raise ArgumentError, "Invalid argument 'narray'. Expected two-dimensional NArray matching @columns & @rows [#{@columns}, #{@rows}], got #{narr.shape}" unless narr.shape == [@columns, @rows]
      @narray = narr
    end
def narray=(narr)
      raise ArgumentError, "Invalid argument 'narray'. Expected NArray, got #{narr.class}" unless narr.is_a?(NArray)
      raise ArgumentError, "Invalid argument 'narray'. Expected two-dimensional NArray matching @columns & @rows [#{@columns}, #{@rows}], got #{narr.shape}" unless narr.shape == [@columns, @rows]
      @narray = narr
    end
Sets the pixel data ('narray' attribute).

 @note The provided pixel array's dimensions must correspond with the
   column and row attributes of the image instance.

 @param [NArray] narr a two-dimensional numerical pixel array
 @raise [ArgumentError] if the dimensions of the given array doesn't match the properties of the image instance