Class: NArrayMiss
- Inherits:
-
Object
- Object
- NArrayMiss
- Includes:
- NMMath
- Defined in:
- lib/narray_miss/version.rb,
lib/narray_miss/narray_miss.rb,
lib/narray_miss/narray_miss.rb
Constant Summary collapse
- VERSION =
"1.3.0"- BYTE =
Class Constants
— NArrayMiss::BYTE
type code for 1 byte unsigned integer.— NArrayMiss::SINT
type code for 2 byte signed integer.— NArrayMiss::LINT
type code for 4 byte signed integer.— NArrayMiss::SFLOAT
type code for single precision float.— NArrayMiss::FLOAT
type code for double precision float.— NArrayMiss::SCOMPLEX
type code for single precision complex.— NArrayMiss::COMPLEX
type code for double precision complex.— NArrayMiss::OBJECT
type code for Ruby object.go back to ((<Index>))
NARRAY::BYTE
- SINT =
NARRAY::SINT
- INT =
NARRAY::INT
- LINT =
NARRAY::LINT
- LLINT =
NARRAY::LINT
- MINT =
int for mask operations
LINT- SFLOAT =
NARRAY::SFLOAT
- FLOAT =
NARRAY::FLOAT
- SCOMPLEX =
NARRAY::SCOMPLEX
- COMPLEX =
NARRAY::COMPLEX
- OBJECT =
NARRAY::OBJECT
- @@llint =
false
Class Method Summary collapse
- .[](*arg) ⇒ Object
- .__new__ ⇒ Object
- ._load(o) ⇒ Object
- .byte(*arg) ⇒ Object
- .complex(*arg) ⇒ Object
- .float(*arg) ⇒ Object
- .int(*arg) ⇒ Object
- .lint(*arg) ⇒ Object
- .llint(*arg) ⇒ Object
-
.new(*arg) ⇒ Object
Class Methods — NArrayMiss.new(typecode, size, …) create ((NArrayMiss)) of ((|typecode|)).
- .object(*arg) ⇒ Object
- .scomplex(*arg) ⇒ Object
- .sfloat(*arg) ⇒ Object
- .sint(*arg) ⇒ Object
- .to_nam(*arg) ⇒ Object
- .to_nam_no_dup(*arg) ⇒ Object
Instance Method Summary collapse
- #%(arg) ⇒ Object
- #&(arg) ⇒ Object
- #*(arg) ⇒ Object
- #**(arg) ⇒ Object
- #+(arg) ⇒ Object
- #-(arg) ⇒ Object
-
#-@ ⇒ Object
Arithmetic operator — NArrayMiss#-@ — NArrayMiss#+(other) — NArrayMiss#-(other) — NArrayMiss#*(other) — NArrayMiss#/(other) — NArrayMiss#%(other) — NArrayMiss#**(other) — NArrayMiss#abs — NArrayMiss#add!(other) — NArrayMiss#sbt!(other) — NArrayMiss#mul!(other) — NArrayMiss#div!(other) — NArrayMiss#mod!(other) — NArrayMiss#mul_add(other, dim, …).
- #/(arg) ⇒ Object
- #==(arg) ⇒ Object
-
#[](*arg) ⇒ Object
Slicing Array — NArrayMiss#[](index) return the value at [((|index|))].
- #[]=(*arg) ⇒ Object
- #^(arg) ⇒ Object
- #__clone__ ⇒ Object
- #_dump(limit) ⇒ Object
- #abs ⇒ Object
-
#accum(*arg) ⇒ Object
Statistics — NArrayMiss#sum(dim, … [“min_count”=>i]) return summation of elements in specified dimensions.
- #add!(arg) ⇒ Object
- #all? ⇒ Boolean
- #all_invalid ⇒ Object
- #all_valid ⇒ Object
- #all_valid? ⇒ Boolean
- #and(arg) ⇒ Object
- #angle ⇒ Object
- #any? ⇒ Boolean
- #any_valid? ⇒ Boolean
- #ceil ⇒ Object
- #clone ⇒ Object
- #coerce(x) ⇒ Object
- #collect(&blk) ⇒ Object
- #collect! ⇒ Object
- #complex? ⇒ Boolean
- #conj ⇒ Object
-
#count_false ⇒ Object
Boolean and mask related (only for byte, sint and int) — NArrayMiss#count_false return the number of elements whose value==0 and valid.
- #count_invalid(*arg) ⇒ Object
- #count_true ⇒ Object
- #count_valid(*arg) ⇒ Object
-
#dim ⇒ Object
NArrayMiss information — NArrayMiss#dim return the dimension which is the number of indices.
- #div!(arg) ⇒ Object
- #dup ⇒ Object
-
#each ⇒ Object
Iteration — NArrayMiss#each{|x| …} — NArrayMiss#each_valid{|x| …} — NArrayMiss#each_valid_with_index{|x,i| …} — NArrayMiss#collect{|x| …} — NArrayMiss#collect{|x| …}.
- #each_valid ⇒ Object
- #each_valid_with_index ⇒ Object
-
#eq(arg) ⇒ Object
Comparison — NArrayMiss#eq(other) — NArrayMiss#ne(other) — NArrayMiss#gt(other) — NArrayMiss#ge(other) — NArrayMiss#lt(other) — NArrayMiss#le(other) — NArrayMiss#>(other) — NArrayMiss#>=(other) — NArrayMiss#<(other) — NArrayMiss#<=(other) — NArrayMiss#and(other) — NArrayMiss#or(other) — NArrayMiss#xor(other) — NArrayMiss#not(other).
-
#floor ⇒ Object
Type conversion — NArrayMiss#floor return ((NArrayMiss)) of integer whose elements processed ((#floor)).
- #ge(arg) ⇒ Object
- #get_array ⇒ Object
- #get_array! ⇒ Object
- #get_mask ⇒ Object
- #get_mask! ⇒ Object
- #gt(arg) ⇒ Object
- #hton ⇒ Object (also: #ntoh)
- #htov ⇒ Object (also: #vtoh)
- #im ⇒ Object
- #imag ⇒ Object
- #imag=(arg) ⇒ Object
- #inspect ⇒ Object
-
#integer? ⇒ Boolean
Others — NArrayMiss#integer? return true if ((NArrayMiss)) is byte, sint or int, else false.
- #le(arg) ⇒ Object
- #lt(arg) ⇒ Object
- #mask(arg) ⇒ Object
- #max(*dims) ⇒ Object
- #mean(*dims) ⇒ Object
- #median(*arg) ⇒ Object
- #min(*dims) ⇒ Object
- #mod!(arg) ⇒ Object
- #mul!(arg) ⇒ Object
- #mul_add(*arg) ⇒ Object
- #ne(arg) ⇒ Object
- #newdim(*arg) ⇒ Object (also: #rewrank)
- #newdim!(*arg) ⇒ Object (also: #rewrank!, #rewrank=)
- #none? ⇒ Boolean
- #none_valid? ⇒ Boolean (also: #all_invalid?)
- #not ⇒ Object
- #or(arg) ⇒ Object
- #rank ⇒ Object
- #rank_total(*arg) ⇒ Object
-
#real ⇒ Object
Complex compound number (only for scomplex and complex) — NArrayMiss#real — NArrayMiss#imag — NArrayMiss#conj — NArrayMiss#angle — NArrayMiss#imag=(other) — NArrayMiss#im.
- #reshape(*arg) ⇒ Object
-
#reshape!(*arg) ⇒ Object
(also: #shape=)
Changing Shapes of indices — NArrayMiss#reshape!(size, …) change shape of array.
- #rms(*dims) ⇒ Object
- #rmsdev(*dims) ⇒ Object
- #round ⇒ Object
- #sbt!(arg) ⇒ Object
- #set_invalid(*pos) ⇒ Object (also: #invalidation)
- #set_mask(mask) ⇒ Object
- #set_missing_value(val) ⇒ Object
- #set_missing_value!(val) ⇒ Object
-
#set_valid(*pos) ⇒ Object
(also: #validation)
Mask and missing value — NArrayMiss#set_valid(index) validate element at ((|index|)).
- #set_without_validation(*arg) ⇒ Object
- #shape ⇒ Object
- #size ⇒ Object (also: #total, #length)
- #slice(*arg) ⇒ Object
- #stddev(*dims) ⇒ Object
- #sum(*dims) ⇒ Object
-
#swap_byte ⇒ Object
Byte swap — NArrayMiss#swap_byte swap byte order.
- #to_a ⇒ Object
- #to_f ⇒ Object
- #to_i ⇒ Object
- #to_na(*arg) ⇒ Object
- #to_na!(*arg) ⇒ Object
- #to_s ⇒ Object
- #to_string ⇒ Object
- #to_type(typecode) ⇒ Object
-
#transpose(*arg) ⇒ Object
Transpose — NArrayMiss#transpose(dim0, dim1, …) transpose array.
- #typecode ⇒ Object
- #valid?(*arg) ⇒ Boolean
- #where ⇒ Object
- #where2 ⇒ Object
- #xor(arg) ⇒ Object
- #|(arg) ⇒ Object
-
#~@ ⇒ Object
Bitwise operator (only for byte, sint and int) — NArrayMiss#~@ — NArrayMiss#&(other) — NArrayMiss#|(other) — NArrayMiss#^(other).
Class Method Details
.[](*arg) ⇒ Object
177 178 179 |
# File 'lib/narray_miss/narray_miss.rb', line 177 def self.[](*arg) NArrayMiss.to_nam(NARRAY[*arg]) end |
.__new__ ⇒ Object
95 |
# File 'lib/narray_miss/narray_miss.rb', line 95 alias :__new__ :new |
._load(o) ⇒ Object
1280 1281 1282 1283 1284 1285 |
# File 'lib/narray_miss/narray_miss.rb', line 1280 def self._load(o) ary, mask = Marshal::load(o) ary = NARRAY._load(ary) mask = NARRAY._load(mask) NArrayMiss.to_nam_no_dup(ary,mask) end |
.byte(*arg) ⇒ Object
145 146 147 |
# File 'lib/narray_miss/narray_miss.rb', line 145 def self.byte(*arg) NArrayMiss.new(BYTE,*arg) end |
.complex(*arg) ⇒ Object
171 172 173 |
# File 'lib/narray_miss/narray_miss.rb', line 171 def self.complex(*arg) NArrayMiss.new(COMPLEX,*arg) end |
.float(*arg) ⇒ Object
165 166 167 |
# File 'lib/narray_miss/narray_miss.rb', line 165 def self.float(*arg) NArrayMiss.new(FLOAT,*arg) end |
.int(*arg) ⇒ Object
151 152 153 |
# File 'lib/narray_miss/narray_miss.rb', line 151 def self.int(*arg) NArrayMiss.new(INT,*arg) end |
.lint(*arg) ⇒ Object
154 155 156 |
# File 'lib/narray_miss/narray_miss.rb', line 154 def self.lint(*arg) NArrayMiss.new(LINT,*arg) end |
.llint(*arg) ⇒ Object
158 159 160 |
# File 'lib/narray_miss/narray_miss.rb', line 158 def self.llint(*arg) NArrayMiss.new(LLINT,*arg) end |
.new(*arg) ⇒ Object
Class Methods
— NArrayMiss.new(typecode, size, …)
create (({NArrayMiss})) of ((|typecode|)).
All elements are initialized with 0.
— NArrayMiss.byte(size, …)
same as NArrayMiss.new(NArrayMiss::BYTE, ((|size|)), ...).
— NArrayMiss.sint(size, …)
same as NArrayMiss.new(NArrayMiss::SINT, ((|size|)), ...).
— NArrayMiss.int(size, …)
same as NArrayMiss.new(NArrayMiss::LINT, ((|size|)), ...).
— NArrayMiss.sfloat(size, …)
same as NArrayMiss.new(NArrayMiss::SFLOAT, ((|size|)), ...).
— NArrayMiss.float(size, …)
same as NArrayMiss.new(NArrayMiss::FLOAT, ((|size|)), ...).
— NArrayMiss.scomplex(size, …)
same as NArrayMiss.new(NArrayMiss::SCOMPLEX, ((|size|)), ...).
— NArrayMiss.complex(size, …)
same as NArrayMiss.new(NArrayMiss::COMPLEX, ((|size|)), ...).
— NArrayMiss.object(size, …)
same as NArrayMiss.new(NArrayMiss::OBJECT, ((|size|)), ...).
— NArrayMiss[](value, …)
create (({NArrayMiss})) form [((|value|)), ...].
— NArrayMiss.to_nam(array [,mask])
create (({NArrayMiss})) from ((|array|)).
((|array|)) must be (({Numeric})) (({Array})) or (({NArray})).
— NArrayMiss.to_nam_no_dup(array [,mask])
convert from ((|array|)) to (({NArrayMiss})).
go back to ((<Index>))
140 141 142 143 144 |
# File 'lib/narray_miss/narray_miss.rb', line 140 def self.new(*arg) array = NARRAY.new(*arg) mask = NARRAY.byte(*arg[1..-1]) __new__(array, mask) end |
.object(*arg) ⇒ Object
174 175 176 |
# File 'lib/narray_miss/narray_miss.rb', line 174 def self.object(*arg) NArrayMiss.new(OBJECT,*arg) end |
.scomplex(*arg) ⇒ Object
168 169 170 |
# File 'lib/narray_miss/narray_miss.rb', line 168 def self.scomplex(*arg) NArrayMiss.new(SCOMPLEX,*arg) end |
.sfloat(*arg) ⇒ Object
162 163 164 |
# File 'lib/narray_miss/narray_miss.rb', line 162 def self.sfloat(*arg) NArrayMiss.new(SFLOAT,*arg) end |
.sint(*arg) ⇒ Object
148 149 150 |
# File 'lib/narray_miss/narray_miss.rb', line 148 def self.sint(*arg) NArrayMiss.new(SINT,*arg) end |
.to_nam(*arg) ⇒ Object
215 216 217 218 219 220 221 222 223 224 |
# File 'lib/narray_miss/narray_miss.rb', line 215 def self.to_nam(*arg) if !(Numeric===arg[0]) && !(Array===arg[0]) && !arg[0].is_a?(NARRAY) raise "first argument must be Numeric, NArray or Array" end arg[0] = arg[0].dup if !(Numeric===arg[0]) if arg.length==2 && !(Numeric===arg[1]) && arg[1].class!=TrueClass && arg[1].class!=FalseClass then arg[1] = arg[1].dup end NArrayMiss.to_nam_no_dup(*arg) end |
.to_nam_no_dup(*arg) ⇒ Object
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'lib/narray_miss/narray_miss.rb', line 180 def self.to_nam_no_dup(*arg) if arg.length > 2 || arg.length==0 then raise("NArrayMiss.to_nar( array [,mask]] )") end array = arg[0] if Numeric===array then array = NARRAY[array] end if Array===array then array = NARRAY.to_na(array) end if !array.is_a?(NARRAY) then raise("argument must be Numeric, NArray or Array") end if arg.length==2 then mask = arg[1] if Numeric===mask then mask = array.ne(mask) end if Array===mask then mask = NARRAY.to_na(mask).ne(0) end if mask.class == FalseClass then mask = NARRAY.byte(*array.shape) end if mask.class == TrueClass then mask = NARRAY.byte(*array.shape).fill(1) end if !(NARRAY===mask && mask.typecode==BYTE) then raise("mask must be Numeric, Array, true, false or NArray(byte)") end if mask.length!=array.length raise "mask.length must be same as array.length" end else mask = NARRAY.byte(*array.shape).fill(1) end __new__(array,mask) end |
Instance Method Details
#%(arg) ⇒ Object
426 427 428 |
# File 'lib/narray_miss/narray_miss.rb', line 426 def %(arg) binary_operation(arg, 1){|t1, t2| t1 % t2} end |
#&(arg) ⇒ Object
475 476 477 |
# File 'lib/narray_miss/narray_miss.rb', line 475 def &(arg) binary_operation(arg, 1){|t1, t2| t1 & t2} end |
#*(arg) ⇒ Object
420 421 422 |
# File 'lib/narray_miss/narray_miss.rb', line 420 def *(arg) binary_operation(arg, 1){|t1, t2| t1 * t2} end |
#**(arg) ⇒ Object
429 430 431 |
# File 'lib/narray_miss/narray_miss.rb', line 429 def **(arg) binary_operation(arg, 1){|t1, t2| t1 ** t2} end |
#+(arg) ⇒ Object
414 415 416 |
# File 'lib/narray_miss/narray_miss.rb', line 414 def +(arg) binary_operation(arg, 0){|t1, t2| t1 + t2} end |
#-(arg) ⇒ Object
417 418 419 |
# File 'lib/narray_miss/narray_miss.rb', line 417 def -(arg) binary_operation(arg, 0){|t1, t2| t1 - t2} end |
#-@ ⇒ Object
Arithmetic operator
— NArrayMiss#-@ — NArrayMiss#+(other) — NArrayMiss#-(other) — NArrayMiss#*(other) — NArrayMiss#/(other) — NArrayMiss#%(other) — NArrayMiss#**(other) — NArrayMiss#abs — NArrayMiss#add!(other) — NArrayMiss#sbt!(other) — NArrayMiss#mul!(other) — NArrayMiss#div!(other) — NArrayMiss#mod!(other) — NArrayMiss#mul_add(other, dim, …)
409 410 411 412 413 |
# File 'lib/narray_miss/narray_miss.rb', line 409 def -@ array = @array.dup array[@mask] = -@array[@mask] NArrayMiss.to_nam_no_dup(array, @mask.dup) end |
#/(arg) ⇒ Object
423 424 425 |
# File 'lib/narray_miss/narray_miss.rb', line 423 def /(arg) binary_operation(arg, 1){|t1, t2| t1 / t2} end |
#==(arg) ⇒ Object
537 538 539 540 541 542 543 |
# File 'lib/narray_miss/narray_miss.rb', line 537 def ==(arg) if arg.kind_of?(NArrayMiss) then @mask==arg.get_mask! && @array[@mask]==arg.get_array![@mask] else false end end |
#[](*arg) ⇒ Object
Slicing Array
— NArrayMiss#[](index)
return the value at [((|index|))].
((|index|)) must be (({Integer, Range, Array, true})).
Index order is FORTRAN type.
— NArrayMiss#slice(index)
same as (({NArrayMiss#[]})) but keeps the rank of original array by not elimiting dimensions whose length became equal to 1 (which (({NArrayMiss#[]})) dose).
This is not the case with the 1-dimensional indexing and masking.
— NArrayMiss#set_without_validation(index,value)
replace elements at ((|index|)) by ((|value|)).
— NArrayMiss#[]=(index, value)
replace elements at ((|index|)) by ((|value|)) and
make replaced elements valid.
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/narray_miss/narray_miss.rb', line 292 def [](*arg) if arg[0].class == NArrayMiss && arg[0].typecode == BYTE obj = @array[arg[0].to_na(0)] if Numeric===obj return obj else return NArrayMiss.to_nam_no_dup(obj) end else obj = @array[*arg] if Numeric===obj return obj else return NArrayMiss.to_nam_no_dup(obj,@mask[*arg]) end end end |
#[]=(*arg) ⇒ Object
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 |
# File 'lib/narray_miss/narray_miss.rb', line 336 def []=(*arg) if arg.length == 2 && arg[0].class == NArrayMiss && arg[0].typecode == BYTE idx = arg[0].to_na(0) self.set_without_validation(idx,arg[-1]) if arg[-1].class != NArrayMiss && arg[-1] then @mask[idx] = 1 end else self.set_without_validation(*arg) if arg[-1].class != NArrayMiss && arg[-1] then if arg.length==1 then @mask=1 else @mask[*arg[0..-2]] = 1 end end end return self end |
#^(arg) ⇒ Object
481 482 483 |
# File 'lib/narray_miss/narray_miss.rb', line 481 def ^(arg) binary_operation(arg, 1){|t1, t2| t1 ^ t2} end |
#__clone__ ⇒ Object
1194 |
# File 'lib/narray_miss/narray_miss.rb', line 1194 alias __clone__ clone |
#_dump(limit) ⇒ Object
1277 1278 1279 |
# File 'lib/narray_miss/narray_miss.rb', line 1277 def _dump(limit) Marshal::dump([@array._dump(nil),@mask._dump(nil)]) end |
#abs ⇒ Object
433 434 435 436 437 |
# File 'lib/narray_miss/narray_miss.rb', line 433 def abs array = @array.dup array[@mask] = @array[@mask].abs NArrayMiss.to_nam_no_dup(array, @mask.dup) end |
#accum(*arg) ⇒ Object
Statistics
— NArrayMiss#sum(dim, … [“min_count”=>i])
return summation of elements in specified dimensions.
Elements at which the number of elements for summation is less than ((|i|)) is invalid.
— NArrayMiss#accum(dim, …)
same as (({NArrayMiss#sum})) but not elimiting dimensions whose length became equal to 1.
— NArrayMiss#min(dim, …)
return minimum in specified dimensions.
Elements at which the number of valid elements in the dimension is less than ((|i|)) is invalid.
— NArrayMiss#max(dim, …)
return maximum in specified dimensions.
Elements at which the number of valid elements in the dimension is less than ((|i|)) is invalid.
— NArrayMiss#median(dim, …)
return median in specified dimensions.
Elements at which the number of valid elements in the dimension is less than ((|i|)) is invalid.
— NArrayMiss#mean(dim, …)
return mean of elements in specified dimensions.
Elements at which the number of elements for then mean is less than ((|i|)) is invalid.
— NArrayMiss#stddev(dim, …)
return standard deviation of elements in specified dimensions.
Elements at which the number of elements for calculation the standard deviation is less than ((|i|)) is invalid.
— NArrayMiss#rms(dim, …)
return root mean square of elements in specified dimensions.
Elements at which the number of elements for calculation the RMS is less than ((|i|)) is invalid.
— NArrayMiss#rmsdev(dim, …)
return root mean square deviation of elements in specified dimensions.
Elements at which the number of elements for calculation the RMS deviation is less than ((|i|)) is invalid.
576 577 578 579 580 581 582 583 584 585 |
# File 'lib/narray_miss/narray_miss.rb', line 576 def accum(*arg) if @mask.count_true == 0 then return nil else array = @array.dup array[@mask.not] = 0 return NArrayMiss.to_nam_no_dup(array.accum(*arg), @mask.to_type(MINT).accum(*arg).ne(0)) end end |
#add!(arg) ⇒ Object
439 440 441 |
# File 'lib/narray_miss/narray_miss.rb', line 439 def add!(arg) binary_operation(arg, 0){|t1, t2| t1.add!(t2)} end |
#all? ⇒ Boolean
934 935 936 |
# File 'lib/narray_miss/narray_miss.rb', line 934 def all? @array[@mask].all? end |
#all_invalid ⇒ Object
1074 1075 1076 1077 |
# File 'lib/narray_miss/narray_miss.rb', line 1074 def all_invalid @mask[true]=0 self end |
#all_valid ⇒ Object
1070 1071 1072 1073 |
# File 'lib/narray_miss/narray_miss.rb', line 1070 def all_valid @mask[true]=1 self end |
#all_valid? ⇒ Boolean
1141 1142 1143 |
# File 'lib/narray_miss/narray_miss.rb', line 1141 def all_valid? @mask.all? end |
#and(arg) ⇒ Object
523 524 525 |
# File 'lib/narray_miss/narray_miss.rb', line 523 def and(arg) binary_operation(arg, 1){|t1, t2| t1.and t2} end |
#angle ⇒ Object
973 974 975 |
# File 'lib/narray_miss/narray_miss.rb', line 973 def angle NArrayMiss.to_nam_no_dup(@array.angle,@mask) end |
#any? ⇒ Boolean
937 938 939 |
# File 'lib/narray_miss/narray_miss.rb', line 937 def any? @array[@mask].any? end |
#any_valid? ⇒ Boolean
1148 1149 1150 |
# File 'lib/narray_miss/narray_miss.rb', line 1148 def any_valid? @mask.any? end |
#ceil ⇒ Object
813 814 815 |
# File 'lib/narray_miss/narray_miss.rb', line 813 def ceil NArrayMiss.to_nam_no_dup(@array.ceil, @mask.dup) end |
#clone ⇒ Object
1195 1196 1197 1198 1199 1200 |
# File 'lib/narray_miss/narray_miss.rb', line 1195 def clone obj = __clone__ obj.set_array(@array.clone) obj.set_mask(@mask.clone) return obj end |
#coerce(x) ⇒ Object
1202 1203 1204 1205 1206 1207 1208 1209 1210 |
# File 'lib/narray_miss/narray_miss.rb', line 1202 def coerce(x) if Numeric===x then return [NArrayMiss.new(NARRAY[x].typecode,*self.shape).fill(x),self] elsif x.class==Array || x.class==NARRAY then return [NArrayMiss.to_nam(x), self] else raise("donnot know how to cange #{x.class} to NArrayMiss") end end |
#collect(&blk) ⇒ Object
886 887 888 |
# File 'lib/narray_miss/narray_miss.rb', line 886 def collect(&blk) self.dup.collect!(&blk) end |
#collect! ⇒ Object
880 881 882 883 884 885 |
# File 'lib/narray_miss/narray_miss.rb', line 880 def collect! for i in 0..self.total-1 self[i] = yield(self[i]) end self end |
#complex? ⇒ Boolean
1185 1186 1187 |
# File 'lib/narray_miss/narray_miss.rb', line 1185 def complex? @array.complex? end |
#conj ⇒ Object
970 971 972 |
# File 'lib/narray_miss/narray_miss.rb', line 970 def conj NArrayMiss.to_nam_no_dup(@array.conj,@mask) end |
#count_false ⇒ Object
Boolean and mask related (only for byte, sint and int)
— NArrayMiss#count_false
return the number of elements whose value==0 and valid.
— NArrayMiss#count_true
return the number of elements whose value!=0 and valid.
— NArrayMiss#mask(mask)
return (({NArrayMiss#get_mask!&((|mask|))})).
— NArrayMiss#all?
return true if all the valid elements are not 0, else false.
— NArrayMiss#any?
return true if any valid element is not 0, else false.
— NArrayMiss#none?
return true if none of the valid elements is not 0, else false.
— NArrayMiss#where
return (({NArray})) of indices where valid elements are not 0.
— NArrayMiss#where2
return (({Array})) including two (({NArray}))s of indices,
where valid elements are not 0, and 0, respectively.
912 913 914 915 916 917 918 |
# File 'lib/narray_miss/narray_miss.rb', line 912 def count_false if @array.typecode==BYTE then return @array.count_false-@mask.count_false else raise("cannot count_true NArrayMiss except BYTE type") end end |
#count_invalid(*arg) ⇒ Object
1159 1160 1161 1162 1163 1164 1165 1166 |
# File 'lib/narray_miss/narray_miss.rb', line 1159 def count_invalid(*arg) if arg.length==0 then return @mask.count_false else return NARRAY.int(*@mask.shape).fill(1).sum(*arg)- @mask.to_type(MINT).sum(*arg) end end |
#count_true ⇒ Object
919 920 921 922 923 924 925 |
# File 'lib/narray_miss/narray_miss.rb', line 919 def count_true if @array.typecode==BYTE then return (@array&@mask).count_true else raise("cannot count_true NArrayMiss except BYTE type") end end |
#count_valid(*arg) ⇒ Object
1152 1153 1154 1155 1156 1157 1158 |
# File 'lib/narray_miss/narray_miss.rb', line 1152 def count_valid(*arg) if arg.length==0 then return @mask.count_true else return @mask.to_type(MINT).sum(*arg) end end |
#dim ⇒ Object
NArrayMiss information
— NArrayMiss#dim
return the dimension which is the number of indices.
— NArrayMiss#rank
same as (({NArrayMiss#dim})).
— NArrayMiss#shape
return the (({Array})) of sizes of each index.
— NArrayMiss#size
return the number of total elements.
— NArrayMiss#total
alias to size
— NArrayMiss#length
alias to size
— NArrayMiss#rank_total
return the number of total of the shape.
— NArrayMiss#typecode
return the typecode.
252 253 254 |
# File 'lib/narray_miss/narray_miss.rb', line 252 def dim @array.dim end |
#div!(arg) ⇒ Object
448 449 450 |
# File 'lib/narray_miss/narray_miss.rb', line 448 def div!(arg) binary_operation(arg, 1){|t1, t2| t1.div!(t2)} end |
#dup ⇒ Object
1190 1191 1192 |
# File 'lib/narray_miss/narray_miss.rb', line 1190 def dup NArrayMiss.to_nam(@array,@mask) end |
#each ⇒ Object
Iteration
— NArrayMiss#each{|x| …} — NArrayMiss#each_valid{|x| …} — NArrayMiss#each_valid_with_index{|x,i| …} — NArrayMiss#collect{|x| …} — NArrayMiss#collect{|x| …}
865 866 867 868 869 |
# File 'lib/narray_miss/narray_miss.rb', line 865 def each for i in 0..self.total-1 yield(@array[i]) end end |
#each_valid ⇒ Object
870 871 872 873 874 |
# File 'lib/narray_miss/narray_miss.rb', line 870 def each_valid for i in 0..self.total-1 yield(@array[i]) if @mask[i] end end |
#each_valid_with_index ⇒ Object
875 876 877 878 879 |
# File 'lib/narray_miss/narray_miss.rb', line 875 def each_valid_with_index for i in 0..self.total-1 yield(@array[i],i) if @mask[i] end end |
#eq(arg) ⇒ Object
Comparison
— NArrayMiss#eq(other) — NArrayMiss#ne(other) — NArrayMiss#gt(other) — NArrayMiss#ge(other) — NArrayMiss#lt(other) — NArrayMiss#le(other) — NArrayMiss#>(other) — NArrayMiss#>=(other) — NArrayMiss#<(other) — NArrayMiss#<=(other) — NArrayMiss#and(other) — NArrayMiss#or(other) — NArrayMiss#xor(other) — NArrayMiss#not(other)
504 505 506 |
# File 'lib/narray_miss/narray_miss.rb', line 504 def eq(arg) binary_operation(arg, 0){|t1, t2| t1.eq t2} end |
#floor ⇒ Object
Type conversion
— NArrayMiss#floor
return (({NArrayMiss})) of integer whose elements processed (({floor})).
— NArrayMiss#ceil
return (({NArrayMiss})) of integer whose elements processed (({ceil})).
— NArrayMiss#round
return (({NArrayMiss})) of integer whose elements processed (({round})).
— NArrayMiss#to_i
return (({NArrayMiss})) of integer whose elements processed (({to_i})).
— NArrayMiss#to_f
return (({NArrayMiss})) of float whose elements processed (({to_f})).
— NArrayMiss#to_type(typecode)
return (({NArrayMiss})) of ((|typecode|)).
— NArrayMiss#to_a
convert (({NArrayMiss})) to (({Array})).
convert (({NArrayMiss})) to (({NArray})).
if there is argument, set missing_value for invalid elements.
convert (({NArrayMiss})) to (({NArray})).
if there is argument, set missing_value for invalid elements.
— NArrayMiss#to_s
convert (({NArrayMiss})) to (({String})) as a binary data.
— NArrayMiss#to_string
create (({NArrayMiss})) of object whose elements are processed (({to_s}))
810 811 812 |
# File 'lib/narray_miss/narray_miss.rb', line 810 def floor NArrayMiss.to_nam_no_dup(@array.floor, @mask.dup) end |
#ge(arg) ⇒ Object
513 514 515 |
# File 'lib/narray_miss/narray_miss.rb', line 513 def ge(arg) binary_operation(arg, 0){|t1, t2| t1.ge t2} end |
#get_array ⇒ Object
1119 1120 1121 |
# File 'lib/narray_miss/narray_miss.rb', line 1119 def get_array @array.dup end |
#get_array! ⇒ Object
1116 1117 1118 |
# File 'lib/narray_miss/narray_miss.rb', line 1116 def get_array! @array end |
#get_mask ⇒ Object
1113 1114 1115 |
# File 'lib/narray_miss/narray_miss.rb', line 1113 def get_mask @mask.dup end |
#get_mask! ⇒ Object
1110 1111 1112 |
# File 'lib/narray_miss/narray_miss.rb', line 1110 def get_mask! @mask end |
#gt(arg) ⇒ Object
510 511 512 |
# File 'lib/narray_miss/narray_miss.rb', line 510 def gt(arg) binary_operation(arg, 0){|t1, t2| t1.gt t2} end |
#hton ⇒ Object Also known as: ntoh
1004 1005 1006 |
# File 'lib/narray_miss/narray_miss.rb', line 1004 def hton NArrayMiss.to_nam(@array.hton,@mask.hton) end |
#htov ⇒ Object Also known as: vtoh
1008 1009 1010 |
# File 'lib/narray_miss/narray_miss.rb', line 1008 def htov NArrayMiss.to_nam(@array.htov,@mask.htov) end |
#im ⇒ Object
980 981 982 |
# File 'lib/narray_miss/narray_miss.rb', line 980 def im NArrayMiss.to_nam_no_dup(@array.im,@mask) end |
#imag ⇒ Object
967 968 969 |
# File 'lib/narray_miss/narray_miss.rb', line 967 def imag NArrayMiss.to_nam_no_dup(@array.imag,@mask) end |
#imag=(arg) ⇒ Object
976 977 978 979 |
# File 'lib/narray_miss/narray_miss.rb', line 976 def imag=(arg) @array.image=(arg) self end |
#inspect ⇒ Object
1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 |
# File 'lib/narray_miss/narray_miss.rb', line 1213 def inspect # "array -> " + @array.inspect + "\nmask -> " + @mask.inspect count_line = 0 max_line = 10 max_col = 80 sep = ", " const = Hash.new NARRAY.constants.each{|c| const[NARRAY.const_get(c)] = c} str_ret = "NArrayMiss."+const[typecode].to_s.downcase+"("+shape.join(",")+"):" if rank == 0 then str_ret << " []" return str_ret else str_ret << "\n" end str = "" index = Array.new(rank,0) index[0] = true i = 1 (rank-1).times{ str_ret << "[ " } while(true) i.times{ str_ret << "[ " } str = @array[*index].inspect ary = str[str.index("[")+1..str.index("]")-1].strip.split(/\s*,\s*/) miss = @mask[*index].where2[1] miss = miss[miss<ary.length].to_a if ary[-1]=="..." && miss[-1]==ary.length-1 then miss.pop end for j in miss ary[j] = "-" end while ( rank*4+ary.join(", ").length > max_col ) ary.pop ary[-1] = "..." end str_ret << ary.join(", ") i = 1 while (i<rank) if index[i]<shape[i]-1 then str_ret << " ]" << sep << "\n" count_line += 1 index[i] += 1 break else str_ret << " ]" index[i] = 0 i += 1 end end if i>=rank then str_ret << " ]" return str_ret elsif count_line>=max_line then str_ret << " ..." return str_ret end (rank-i).times{ str_ret << " " } end return str_ret end |
#integer? ⇒ Boolean
Others
— NArrayMiss#integer?
return true if (({NArrayMiss})) is byte, sint or int, else false.
— NArrayMiss#complex?
return true if (({NArrayMiss})) is scomplex or complex, else false.
— NArrayMiss#dup — NArrayMiss#coerce(object) — NArrayMiss#inspect
go back to ((<Index>))
1182 1183 1184 |
# File 'lib/narray_miss/narray_miss.rb', line 1182 def integer? @array.integer? end |
#le(arg) ⇒ Object
519 520 521 |
# File 'lib/narray_miss/narray_miss.rb', line 519 def le(arg) binary_operation(arg, 0){|t1, t2| t1.le t2} end |
#lt(arg) ⇒ Object
516 517 518 |
# File 'lib/narray_miss/narray_miss.rb', line 516 def lt(arg) binary_operation(arg, 0){|t1, t2| t1.lt t2} end |
#mask(arg) ⇒ Object
926 927 928 929 930 931 932 |
# File 'lib/narray_miss/narray_miss.rb', line 926 def mask(arg) obj = self.dup if arg.class==NArrayMiss then arg = arg.get_array!&arg.get_mask! end obj.set_mask(@mask&arg) end |
#max(*dims) ⇒ Object
606 607 608 609 610 611 612 613 614 615 |
# File 'lib/narray_miss/narray_miss.rb', line 606 def max(*dims) min_count = NArrayMiss.(dims, 1) # 欠損値に最小値を入れて普通に max する # byte,sint,int,sfloat,float の MIN の値を入れるように変更すべき ary0 = @array.dup ary0[@mask.not] = @array.min NArrayMiss.reduction(@mask, rank, min_count, dims, false, typecode) do ary0.max(*dims) end end |
#mean(*dims) ⇒ Object
617 618 619 620 621 622 623 624 |
# File 'lib/narray_miss/narray_miss.rb', line 617 def mean(*dims) min_count = NArrayMiss.(dims, 1) # 整数型の場合は浮動小数型へ変換 ary0 = self.integer? ? self.to_type(NARRAY::DFLOAT) : self NArrayMiss.reduction(@mask, rank, min_count, dims, true, typecode) do |count_sum, count_accum| ary0.sum(*dims)/count_sum end end |
#median(*arg) ⇒ Object
658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 |
# File 'lib/narray_miss/narray_miss.rb', line 658 def median(*arg) if arg.length==0 then return @array[@mask].median else nshape = NARRAY.to_na(@array.shape) nshape[arg]=1 nslice = nshape[nshape.ne(1).where] index = NARRAY.object(@mask.rank) index[nshape.eq(1).where] = true obj = NArrayMiss.new(@array.typecode,*nslice.to_a) total = 1 nslice.each{|n| total *= n} for i in 0...total index[nshape.ne(1).where] = pos(i,nslice) mask = NARRAY.byte(*@array.shape).fill(0) mask[*index] = 1 mask = @mask&mask if mask.count_true != 0 then obj[*pos(i,nslice)] = @array[mask].median end end return obj end end |
#min(*dims) ⇒ Object
596 597 598 599 600 601 602 603 604 605 |
# File 'lib/narray_miss/narray_miss.rb', line 596 def min(*dims) min_count = NArrayMiss.(dims, 1) # 欠損値に最大値を入れて普通に min する # byte,sint,int,sfloat,float の MAX の値を入れるように変更すべき ary0 = @array.dup ary0[@mask.not] = @array.max NArrayMiss.reduction(@mask, rank, min_count, dims, false, typecode) do ary0.min(*dims) end end |
#mod!(arg) ⇒ Object
451 452 453 |
# File 'lib/narray_miss/narray_miss.rb', line 451 def mod!(arg) binary_operation(arg, 1){|t1, t2| t1.mod!(t2)} end |
#mul!(arg) ⇒ Object
445 446 447 |
# File 'lib/narray_miss/narray_miss.rb', line 445 def mul!(arg) binary_operation(arg, 1){|t1, t2| t1.mul!(t2)} end |
#mul_add(*arg) ⇒ Object
455 456 457 458 459 460 461 |
# File 'lib/narray_miss/narray_miss.rb', line 455 def mul_add(*arg) if arg.length==1 then return (self*arg[0]).sum else return (self*arg[0]).sum(*arg[1..-1]) end end |
#ne(arg) ⇒ Object
507 508 509 |
# File 'lib/narray_miss/narray_miss.rb', line 507 def ne(arg) binary_operation(arg, 0){|t1, t2| t1.ne t2} end |
#newdim(*arg) ⇒ Object Also known as: rewrank
775 776 777 778 |
# File 'lib/narray_miss/narray_miss.rb', line 775 def newdim(*arg) obj = self.dup obj.newdim!(*arg) end |
#newdim!(*arg) ⇒ Object Also known as: rewrank!, rewrank=
768 769 770 771 772 |
# File 'lib/narray_miss/narray_miss.rb', line 768 def newdim!(*arg) @array = @array.newdim!(*arg) @mask = @mask.newdim!(*arg) self end |
#none? ⇒ Boolean
940 941 942 |
# File 'lib/narray_miss/narray_miss.rb', line 940 def none? @array[@mask].none? end |
#none_valid? ⇒ Boolean Also known as: all_invalid?
1144 1145 1146 |
# File 'lib/narray_miss/narray_miss.rb', line 1144 def none_valid? @mask.none? end |
#not ⇒ Object
533 534 535 |
# File 'lib/narray_miss/narray_miss.rb', line 533 def not NArrayMiss.to_nam_no_dup(@array.not, @mask.dup) end |
#or(arg) ⇒ Object
526 527 528 |
# File 'lib/narray_miss/narray_miss.rb', line 526 def or(arg) binary_operation(arg, 0){|t1, t2| t1.or t2} end |
#rank ⇒ Object
255 256 257 |
# File 'lib/narray_miss/narray_miss.rb', line 255 def rank @array.rank end |
#rank_total(*arg) ⇒ Object
267 268 269 |
# File 'lib/narray_miss/narray_miss.rb', line 267 def rank_total(*arg) @array.rank_total(*arg) end |
#real ⇒ Object
Complex compound number (only for scomplex and complex)
— NArrayMiss#real — NArrayMiss#imag — NArrayMiss#conj — NArrayMiss#angle — NArrayMiss#imag=(other) — NArrayMiss#im
964 965 966 |
# File 'lib/narray_miss/narray_miss.rb', line 964 def real NArrayMiss.to_nam_no_dup(@array.real,@mask) end |
#reshape(*arg) ⇒ Object
763 764 765 766 |
# File 'lib/narray_miss/narray_miss.rb', line 763 def reshape(*arg) obj = self.dup obj.reshape!(*arg) end |
#reshape!(*arg) ⇒ Object Also known as: shape=
Changing Shapes of indices
— NArrayMiss#reshape!(size, …)
change shape of array.
— NArrayMiss#reshape(size, …)
same as (({NArrayMiss#reshape!})) but create new object.
— NArrayMiss#shape=(size, …)
same as (({NArrayMiss#reshape!})).
— NArrayMiss#newdim!(dim)
insert new dimension with size=1
— NArrayMiss#newdim(dim)
same as (({NArrayMiss#newdim!})) but create new object.
— NArrayMiss#rewrank!(dim)
same as (({NArrayMiss#newdim!})).
— NArrayMiss#rewrank=(dim)
same as (({NArrayMiss#newdim!})).
758 759 760 761 762 |
# File 'lib/narray_miss/narray_miss.rb', line 758 def reshape!(*arg) @array = @array.reshape!(*arg) @mask = @mask.reshape!(*arg) self end |
#rms(*dims) ⇒ Object
636 637 638 639 640 641 642 643 644 645 |
# File 'lib/narray_miss/narray_miss.rb', line 636 def rms(*dims) min_count = NArrayMiss.(dims, 1) # 整数型の場合は浮動小数型へ変換 ary0 = self.integer? ? self.to_type(NARRAY::DFLOAT) : self NArrayMiss.reduction(@mask, rank, min_count, dims, true, typecode) do |count_sum, count_accum| ary0 = ary0.abs if ary0.complex? ary0 = (ary0**2).sum(*dims) / count_sum NMMath.sqrt(ary0) end end |
#rmsdev(*dims) ⇒ Object
646 647 648 649 650 651 652 653 654 655 656 |
# File 'lib/narray_miss/narray_miss.rb', line 646 def rmsdev(*dims) min_count = NArrayMiss.(dims, 1) # 整数型の場合は浮動小数型へ変換 ary0 = self.integer? ? self.to_type(NARRAY::DFLOAT) : self NArrayMiss.reduction(@mask, rank, min_count, dims, true, typecode) do |count_sum, count_accum| ary0 = ary0 - ary0.accum(*dims)/count_accum ary0 = ary0.abs if ary0.complex? ary0 = (ary0**2).sum(*dims) / count_sum NMMath.sqrt(ary0) end end |
#round ⇒ Object
816 817 818 |
# File 'lib/narray_miss/narray_miss.rb', line 816 def round NArrayMiss.to_nam_no_dup(@array.round, @mask.dup) end |
#sbt!(arg) ⇒ Object
442 443 444 |
# File 'lib/narray_miss/narray_miss.rb', line 442 def sbt!(arg) binary_operation(arg, 0){|t1, t2| t1.sbt!(t2)} end |
#set_invalid(*pos) ⇒ Object Also known as: invalidation
1065 1066 1067 1068 |
# File 'lib/narray_miss/narray_miss.rb', line 1065 def set_invalid(*pos) @mask[*pos] = 0 self end |
#set_mask(mask) ⇒ Object
1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 |
# File 'lib/narray_miss/narray_miss.rb', line 1078 def set_mask(mask) if mask.class == Array then tmp = NARRAY.byte(*@mask.shape) tmp[true] = mask mask = tmp end if mask.class == NArrayMiss then mask = mask.to_na(0) end if mask.class == NARRAY then if mask.typecode != BYTE then raise("mask must be NArrayMiss.byte, NArray.byte or Array") end if @array.shape != mask.shape then raise("mask.shape must be same as array") end @mask = mask.dup return self else raise("mask must be NArray.byte or Array") end end |
#set_missing_value(val) ⇒ Object
1105 1106 1107 1108 |
# File 'lib/narray_miss/narray_miss.rb', line 1105 def set_missing_value(val) obj = self.dup obj.set_missing_value!(val) end |
#set_missing_value!(val) ⇒ Object
1101 1102 1103 1104 |
# File 'lib/narray_miss/narray_miss.rb', line 1101 def set_missing_value!(val) @array[@mask.not] = val self end |
#set_valid(*pos) ⇒ Object Also known as: validation
Mask and missing value
— NArrayMiss#set_valid(index)
validate element at ((|index|)).
((|index|)) must be (({Integer, Range, Array, or ture})).
— NArrayMiss#validation(index)
alias to set_valid
— NArrayMiss#set_invalid(index)
invaliadate element at ((|index|)).
((|index|)) must be (({Integer, Range, Array, or ture})).
— NArrayMiss#invalidation(index)
alias to set_invalid
— NArrayMiss#all_valid
set all elements valid
— NArrayMiss#all_invalid
set all elements invalid
— NArrayMiss#set_mask(mask)
masking by ((|mask|))
— NArrayMiss#set_missing_value(value)
replace invalid elements by ((|value|)).
— NArrayMiss#get_mask!
return (({NArray})) of byte as mask.
— NArrayMiss#get_mask
return (({NArray})) of byte as mask.
— NArrayMiss#get_array!
return (({NArray})) as data.
— NArrayMiss#get_array
return (({NArray})) as data.
— NArrayMiss#valid?(index)
return (({Array})) whose elements are true or false,
or (({True}))/(({False})) corresponding to validity of the specified element(s) by the ((|index|))
— NArrayMiss#all_valid?
return true if all elements are valid, else false.
— NArrayMiss#none_valid?
return true if all elements are invalid, else false.
— NArrayMiss#all_invalid?
alias to none_valid?
— NArrayMiss#any_valid?
return true if any elements are valid, else false.
— NArrayMiss#count_valid
return the number of valid elements.
— NArrayMiss#count_invalid
return the number of invalid elements.
1060 1061 1062 1063 |
# File 'lib/narray_miss/narray_miss.rb', line 1060 def set_valid(*pos) @mask[*pos] = 1 self end |
#set_without_validation(*arg) ⇒ Object
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
# File 'lib/narray_miss/narray_miss.rb', line 313 def set_without_validation(*arg) if arg.length==1 then if !arg[0] then @mask[] = 0 elsif arg[0].class == NArrayMiss then @array[] = arg[0].get_array! @mask[] = arg[0].get_mask! else @array[] = arg[0] end else if !arg[-1] then @mask[*arg[0..-2]] = 0 elsif arg[-1].class == NArrayMiss then @array[*arg[0..-2]] = arg[-1].get_array! @mask[*arg[0..-2]] = arg[-1].get_mask! else @array[*arg[0..-2]] = arg[-1] end end return self end |
#shape ⇒ Object
258 259 260 |
# File 'lib/narray_miss/narray_miss.rb', line 258 def shape @array.shape end |
#size ⇒ Object Also known as: total, length
261 262 263 |
# File 'lib/narray_miss/narray_miss.rb', line 261 def size @array.size end |
#slice(*arg) ⇒ Object
309 310 311 |
# File 'lib/narray_miss/narray_miss.rb', line 309 def slice(*arg) NArrayMiss.to_nam_no_dup(@array.slice(*arg),@mask.slice(*arg)) end |
#stddev(*dims) ⇒ Object
625 626 627 628 629 630 631 632 633 634 635 |
# File 'lib/narray_miss/narray_miss.rb', line 625 def stddev(*dims) min_count = NArrayMiss.(dims, 2) # 整数型の場合は浮動小数型へ変換 ary0 = self.integer? ? self.to_type(NARRAY::DFLOAT) : self NArrayMiss.reduction(@mask, rank, min_count, dims, true, typecode) do |count_sum, count_accum| ary0 = ary0 - ary0.accum(*dims)/count_accum ary0 = ary0.abs if ary0.complex? ary0 = (ary0**2).sum(*dims) / (count_sum-1) NMMath.sqrt(ary0) end end |
#sum(*dims) ⇒ Object
587 588 589 590 591 592 593 594 595 |
# File 'lib/narray_miss/narray_miss.rb', line 587 def sum(*dims) min_count = NArrayMiss.(dims, 1) # 欠損値に 0 を入れて普通に sum する ary0 = @array.dup ary0[@mask.not] = 0 NArrayMiss.reduction(@mask, rank, min_count, dims, false, typecode) do ary0.sum(*dims) end end |
#swap_byte ⇒ Object
Byte swap
— NArrayMiss#swap_byte
swap byte order.
— NArrayMiss#hton
convert to network byte order.
— NArrayMiss#ntoh
convert from network byte order.
— NArrayMiss#htov
convert to VAX byte order.
— NArrayMiss#vtoh
convert from VAX byte order.
999 1000 1001 1002 1003 |
# File 'lib/narray_miss/narray_miss.rb', line 999 def swap_byte obj = self.dup obj.set_without_validation(@array.swap_byte) obj end |
#to_a ⇒ Object
829 830 831 |
# File 'lib/narray_miss/narray_miss.rb', line 829 def to_a @array.to_a end |
#to_f ⇒ Object
822 823 824 |
# File 'lib/narray_miss/narray_miss.rb', line 822 def to_f NArrayMiss.to_nam_no_dup(@array.to_f, @mask.dup) end |
#to_i ⇒ Object
819 820 821 |
# File 'lib/narray_miss/narray_miss.rb', line 819 def to_i NArrayMiss.to_nam_no_dup(@array.to_i, @mask.dup) end |
#to_na(*arg) ⇒ Object
842 843 844 |
# File 'lib/narray_miss/narray_miss.rb', line 842 def to_na(*arg) return self.dup.to_na!(*arg) end |
#to_na!(*arg) ⇒ Object
832 833 834 835 836 837 838 839 840 841 |
# File 'lib/narray_miss/narray_miss.rb', line 832 def to_na!(*arg) if arg.length==0 return @array elsif arg.length==1 then self.set_missing_value!(arg[0]) return @array else raise(ArgumentError, "Usage: NArrayMiss#to_na([missing_value])") end end |
#to_s ⇒ Object
845 846 847 |
# File 'lib/narray_miss/narray_miss.rb', line 845 def to_s @array.to_s end |
#to_string ⇒ Object
848 849 850 851 852 853 |
# File 'lib/narray_miss/narray_miss.rb', line 848 def to_string obj = NArrayMiss.obj(*@array.shape) obj.set_without_validation( @array.to_string ) obh.set_mask(@mask) obj end |
#to_type(typecode) ⇒ Object
826 827 828 |
# File 'lib/narray_miss/narray_miss.rb', line 826 def to_type(typecode) NArrayMiss.to_nam_no_dup(@array.to_type(typecode), @mask.dup) end |
#transpose(*arg) ⇒ Object
Transpose
— NArrayMiss#transpose(dim0, dim1, …)
transpose array. The 0-th dimension goes to the ((|dim0|))-th dimension of new array.
730 731 732 733 734 735 736 737 |
# File 'lib/narray_miss/narray_miss.rb', line 730 def transpose(*arg) obj = self.dup shape = arg.collect{|i| obj.shape[i]} obj.reshape!(*shape) obj.set_without_validation( @array.transpose(*arg) ) obj.set_mask(@mask.transpose(*arg)) obj end |
#typecode ⇒ Object
271 272 273 |
# File 'lib/narray_miss/narray_miss.rb', line 271 def typecode @array.typecode end |
#valid?(*arg) ⇒ Boolean
1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 |
# File 'lib/narray_miss/narray_miss.rb', line 1123 def valid?(*arg) if arg.any? # For the subset specified by the argument(s) (in the same way as for []). # Returns true or false if a single value is specified. # Otherwise, returns an Array of true of false mask = @mask[*arg] if mask.is_a?(Numeric) return mask == 1 # true if mask (==1); false if not end else # no argument mask = @mask end ary = mask.to_a ary.flatten! ary.map!{|i| i==1} # true if element == 1; false if not return ary end |
#where ⇒ Object
944 945 946 |
# File 'lib/narray_miss/narray_miss.rb', line 944 def where (@array&@mask).where end |
#where2 ⇒ Object
947 948 949 |
# File 'lib/narray_miss/narray_miss.rb', line 947 def where2 self.where-@mask.where end |
#xor(arg) ⇒ Object
529 530 531 |
# File 'lib/narray_miss/narray_miss.rb', line 529 def xor(arg) binary_operation(arg, 1){|t1, t2| t1.xor t2} end |
#|(arg) ⇒ Object
478 479 480 |
# File 'lib/narray_miss/narray_miss.rb', line 478 def |(arg) binary_operation(arg, 0){|t1, t2| t1 | t2} end |
#~@ ⇒ Object
Bitwise operator (only for byte, sint and int)
— NArrayMiss#~@ — NArrayMiss#&(other) — NArrayMiss#|(other) — NArrayMiss#^(other)
472 473 474 |
# File 'lib/narray_miss/narray_miss.rb', line 472 def ~@ NArrayMiss.to_nam_to_dup(~@array, @mask.dup) end |