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.2.8"- BYTE =
Class Constants
— NArrayMiss::BYTE
type code for 1 byte unsigned integer.— NArrayMiss::SINT
type code for 2 byte signed integer.— NArrayMiss::INT
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
- SFLOAT =
NArray::SFLOAT
- FLOAT =
NArray::FLOAT
- SCOMPLEX =
NArray::SCOMPLEX
- COMPLEX =
NArray::COMPLEX
- OBJECT =
NArray::OBJECT
Class Method Summary collapse
- .[](*arg) ⇒ Object
- .__new__ ⇒ Object
- ._load(o) ⇒ Object
- .byte(*arg) ⇒ Object
- .complex(*arg) ⇒ Object
- .float(*arg) ⇒ Object
- .int(*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
148 149 150 |
# File 'lib/narray_miss/narray_miss.rb', line 148 def self.[](*arg) NArrayMiss.to_nam(NArray[*arg]) end |
.__new__ ⇒ Object
74 |
# File 'lib/narray_miss/narray_miss.rb', line 74 alias :__new__ :new |
._load(o) ⇒ Object
1251 1252 1253 1254 1255 1256 |
# File 'lib/narray_miss/narray_miss.rb', line 1251 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
124 125 126 |
# File 'lib/narray_miss/narray_miss.rb', line 124 def self.byte(*arg) NArrayMiss.new(BYTE,*arg) end |
.complex(*arg) ⇒ Object
142 143 144 |
# File 'lib/narray_miss/narray_miss.rb', line 142 def self.complex(*arg) NArrayMiss.new(COMPLEX,*arg) end |
.float(*arg) ⇒ Object
136 137 138 |
# File 'lib/narray_miss/narray_miss.rb', line 136 def self.float(*arg) NArrayMiss.new(FLOAT,*arg) end |
.int(*arg) ⇒ Object
130 131 132 |
# File 'lib/narray_miss/narray_miss.rb', line 130 def self.int(*arg) NArrayMiss.new(INT,*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::INT, ((|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>))
119 120 121 122 123 |
# File 'lib/narray_miss/narray_miss.rb', line 119 def self.new(*arg) array = NArray.new(*arg) mask = NArray.byte(*arg[1..-1]) __new__(array, mask) end |
.object(*arg) ⇒ Object
145 146 147 |
# File 'lib/narray_miss/narray_miss.rb', line 145 def self.object(*arg) NArrayMiss.new(OBJECT,*arg) end |
.scomplex(*arg) ⇒ Object
139 140 141 |
# File 'lib/narray_miss/narray_miss.rb', line 139 def self.scomplex(*arg) NArrayMiss.new(SCOMPLEX,*arg) end |
.sfloat(*arg) ⇒ Object
133 134 135 |
# File 'lib/narray_miss/narray_miss.rb', line 133 def self.sfloat(*arg) NArrayMiss.new(SFLOAT,*arg) end |
.sint(*arg) ⇒ Object
127 128 129 |
# File 'lib/narray_miss/narray_miss.rb', line 127 def self.sint(*arg) NArrayMiss.new(SINT,*arg) end |
.to_nam(*arg) ⇒ Object
186 187 188 189 190 191 192 193 194 195 |
# File 'lib/narray_miss/narray_miss.rb', line 186 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
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/narray_miss/narray_miss.rb', line 151 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
397 398 399 |
# File 'lib/narray_miss/narray_miss.rb', line 397 def %(arg) binary_operation(arg, 1){|t1, t2| t1 % t2} end |
#&(arg) ⇒ Object
446 447 448 |
# File 'lib/narray_miss/narray_miss.rb', line 446 def &(arg) binary_operation(arg, 1){|t1, t2| t1 & t2} end |
#*(arg) ⇒ Object
391 392 393 |
# File 'lib/narray_miss/narray_miss.rb', line 391 def *(arg) binary_operation(arg, 1){|t1, t2| t1 * t2} end |
#**(arg) ⇒ Object
400 401 402 |
# File 'lib/narray_miss/narray_miss.rb', line 400 def **(arg) binary_operation(arg, 1){|t1, t2| t1 ** t2} end |
#+(arg) ⇒ Object
385 386 387 |
# File 'lib/narray_miss/narray_miss.rb', line 385 def +(arg) binary_operation(arg, 0){|t1, t2| t1 + t2} end |
#-(arg) ⇒ Object
388 389 390 |
# File 'lib/narray_miss/narray_miss.rb', line 388 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, …)
380 381 382 383 384 |
# File 'lib/narray_miss/narray_miss.rb', line 380 def -@ array = @array.dup array[@mask] = -@array[@mask] NArrayMiss.to_nam_no_dup(array, @mask.dup) end |
#/(arg) ⇒ Object
394 395 396 |
# File 'lib/narray_miss/narray_miss.rb', line 394 def /(arg) binary_operation(arg, 1){|t1, t2| t1 / t2} end |
#==(arg) ⇒ Object
508 509 510 511 512 513 514 |
# File 'lib/narray_miss/narray_miss.rb', line 508 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.
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 |
# File 'lib/narray_miss/narray_miss.rb', line 263 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
307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 |
# File 'lib/narray_miss/narray_miss.rb', line 307 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
452 453 454 |
# File 'lib/narray_miss/narray_miss.rb', line 452 def ^(arg) binary_operation(arg, 1){|t1, t2| t1 ^ t2} end |
#__clone__ ⇒ Object
1165 |
# File 'lib/narray_miss/narray_miss.rb', line 1165 alias __clone__ clone |
#_dump(limit) ⇒ Object
1248 1249 1250 |
# File 'lib/narray_miss/narray_miss.rb', line 1248 def _dump(limit) Marshal::dump([@array._dump(nil),@mask._dump(nil)]) end |
#abs ⇒ Object
404 405 406 407 408 |
# File 'lib/narray_miss/narray_miss.rb', line 404 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.
547 548 549 550 551 552 553 554 555 556 |
# File 'lib/narray_miss/narray_miss.rb', line 547 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(NArray::INT).accum(*arg).ne(0)) end end |
#add!(arg) ⇒ Object
410 411 412 |
# File 'lib/narray_miss/narray_miss.rb', line 410 def add!(arg) binary_operation(arg, 0){|t1, t2| t1.add!(t2)} end |
#all? ⇒ Boolean
905 906 907 |
# File 'lib/narray_miss/narray_miss.rb', line 905 def all? @array[@mask].all? end |
#all_invalid ⇒ Object
1045 1046 1047 1048 |
# File 'lib/narray_miss/narray_miss.rb', line 1045 def all_invalid @mask[true]=0 self end |
#all_valid ⇒ Object
1041 1042 1043 1044 |
# File 'lib/narray_miss/narray_miss.rb', line 1041 def all_valid @mask[true]=1 self end |
#all_valid? ⇒ Boolean
1112 1113 1114 |
# File 'lib/narray_miss/narray_miss.rb', line 1112 def all_valid? @mask.all? end |
#and(arg) ⇒ Object
494 495 496 |
# File 'lib/narray_miss/narray_miss.rb', line 494 def and(arg) binary_operation(arg, 1){|t1, t2| t1.and t2} end |
#angle ⇒ Object
944 945 946 |
# File 'lib/narray_miss/narray_miss.rb', line 944 def angle NArrayMiss.to_nam_no_dup(@array.angle,@mask) end |
#any? ⇒ Boolean
908 909 910 |
# File 'lib/narray_miss/narray_miss.rb', line 908 def any? @array[@mask].any? end |
#any_valid? ⇒ Boolean
1119 1120 1121 |
# File 'lib/narray_miss/narray_miss.rb', line 1119 def any_valid? @mask.any? end |
#ceil ⇒ Object
784 785 786 |
# File 'lib/narray_miss/narray_miss.rb', line 784 def ceil NArrayMiss.to_nam_no_dup(@array.ceil, @mask.dup) end |
#clone ⇒ Object
1166 1167 1168 1169 1170 1171 |
# File 'lib/narray_miss/narray_miss.rb', line 1166 def clone obj = __clone__ obj.set_array(@array.clone) obj.set_mask(@mask.clone) return obj end |
#coerce(x) ⇒ Object
1173 1174 1175 1176 1177 1178 1179 1180 1181 |
# File 'lib/narray_miss/narray_miss.rb', line 1173 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
857 858 859 |
# File 'lib/narray_miss/narray_miss.rb', line 857 def collect(&blk) self.dup.collect!(&blk) end |
#collect! ⇒ Object
851 852 853 854 855 856 |
# File 'lib/narray_miss/narray_miss.rb', line 851 def collect! for i in 0..self.total-1 self[i] = yield(self[i]) end self end |
#complex? ⇒ Boolean
1156 1157 1158 |
# File 'lib/narray_miss/narray_miss.rb', line 1156 def complex? @array.complex? end |
#conj ⇒ Object
941 942 943 |
# File 'lib/narray_miss/narray_miss.rb', line 941 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.
883 884 885 886 887 888 889 |
# File 'lib/narray_miss/narray_miss.rb', line 883 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
1130 1131 1132 1133 1134 1135 1136 1137 |
# File 'lib/narray_miss/narray_miss.rb', line 1130 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(NArray::INT).sum(*arg) end end |
#count_true ⇒ Object
890 891 892 893 894 895 896 |
# File 'lib/narray_miss/narray_miss.rb', line 890 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
1123 1124 1125 1126 1127 1128 1129 |
# File 'lib/narray_miss/narray_miss.rb', line 1123 def count_valid(*arg) if arg.length==0 then return @mask.count_true else return @mask.to_type(NArray::INT).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.
223 224 225 |
# File 'lib/narray_miss/narray_miss.rb', line 223 def dim @array.dim end |
#div!(arg) ⇒ Object
419 420 421 |
# File 'lib/narray_miss/narray_miss.rb', line 419 def div!(arg) binary_operation(arg, 1){|t1, t2| t1.div!(t2)} end |
#dup ⇒ Object
1161 1162 1163 |
# File 'lib/narray_miss/narray_miss.rb', line 1161 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| …}
836 837 838 839 840 |
# File 'lib/narray_miss/narray_miss.rb', line 836 def each for i in 0..self.total-1 yield(@array[i]) end end |
#each_valid ⇒ Object
841 842 843 844 845 |
# File 'lib/narray_miss/narray_miss.rb', line 841 def each_valid for i in 0..self.total-1 yield(@array[i]) if @mask[i] end end |
#each_valid_with_index ⇒ Object
846 847 848 849 850 |
# File 'lib/narray_miss/narray_miss.rb', line 846 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)
475 476 477 |
# File 'lib/narray_miss/narray_miss.rb', line 475 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}))
781 782 783 |
# File 'lib/narray_miss/narray_miss.rb', line 781 def floor NArrayMiss.to_nam_no_dup(@array.floor, @mask.dup) end |
#ge(arg) ⇒ Object
484 485 486 |
# File 'lib/narray_miss/narray_miss.rb', line 484 def ge(arg) binary_operation(arg, 0){|t1, t2| t1.ge t2} end |
#get_array ⇒ Object
1090 1091 1092 |
# File 'lib/narray_miss/narray_miss.rb', line 1090 def get_array @array.dup end |
#get_array! ⇒ Object
1087 1088 1089 |
# File 'lib/narray_miss/narray_miss.rb', line 1087 def get_array! @array end |
#get_mask ⇒ Object
1084 1085 1086 |
# File 'lib/narray_miss/narray_miss.rb', line 1084 def get_mask @mask.dup end |
#get_mask! ⇒ Object
1081 1082 1083 |
# File 'lib/narray_miss/narray_miss.rb', line 1081 def get_mask! @mask end |
#gt(arg) ⇒ Object
481 482 483 |
# File 'lib/narray_miss/narray_miss.rb', line 481 def gt(arg) binary_operation(arg, 0){|t1, t2| t1.gt t2} end |
#hton ⇒ Object Also known as: ntoh
975 976 977 |
# File 'lib/narray_miss/narray_miss.rb', line 975 def hton NArrayMiss.to_nam(@array.hton,@mask.hton) end |
#htov ⇒ Object Also known as: vtoh
979 980 981 |
# File 'lib/narray_miss/narray_miss.rb', line 979 def htov NArrayMiss.to_nam(@array.htov,@mask.htov) end |
#im ⇒ Object
951 952 953 |
# File 'lib/narray_miss/narray_miss.rb', line 951 def im NArrayMiss.to_nam_no_dup(@array.im,@mask) end |
#imag ⇒ Object
938 939 940 |
# File 'lib/narray_miss/narray_miss.rb', line 938 def imag NArrayMiss.to_nam_no_dup(@array.imag,@mask) end |
#imag=(arg) ⇒ Object
947 948 949 950 |
# File 'lib/narray_miss/narray_miss.rb', line 947 def imag=(arg) @array.image=(arg) self end |
#inspect ⇒ Object
1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 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 |
# File 'lib/narray_miss/narray_miss.rb', line 1184 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>))
1153 1154 1155 |
# File 'lib/narray_miss/narray_miss.rb', line 1153 def integer? @array.integer? end |
#le(arg) ⇒ Object
490 491 492 |
# File 'lib/narray_miss/narray_miss.rb', line 490 def le(arg) binary_operation(arg, 0){|t1, t2| t1.le t2} end |
#lt(arg) ⇒ Object
487 488 489 |
# File 'lib/narray_miss/narray_miss.rb', line 487 def lt(arg) binary_operation(arg, 0){|t1, t2| t1.lt t2} end |
#mask(arg) ⇒ Object
897 898 899 900 901 902 903 |
# File 'lib/narray_miss/narray_miss.rb', line 897 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
577 578 579 580 581 582 583 584 585 586 |
# File 'lib/narray_miss/narray_miss.rb', line 577 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
588 589 590 591 592 593 594 595 |
# File 'lib/narray_miss/narray_miss.rb', line 588 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
629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 |
# File 'lib/narray_miss/narray_miss.rb', line 629 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
567 568 569 570 571 572 573 574 575 576 |
# File 'lib/narray_miss/narray_miss.rb', line 567 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
422 423 424 |
# File 'lib/narray_miss/narray_miss.rb', line 422 def mod!(arg) binary_operation(arg, 1){|t1, t2| t1.mod!(t2)} end |
#mul!(arg) ⇒ Object
416 417 418 |
# File 'lib/narray_miss/narray_miss.rb', line 416 def mul!(arg) binary_operation(arg, 1){|t1, t2| t1.mul!(t2)} end |
#mul_add(*arg) ⇒ Object
426 427 428 429 430 431 432 |
# File 'lib/narray_miss/narray_miss.rb', line 426 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
478 479 480 |
# File 'lib/narray_miss/narray_miss.rb', line 478 def ne(arg) binary_operation(arg, 0){|t1, t2| t1.ne t2} end |
#newdim(*arg) ⇒ Object Also known as: rewrank
746 747 748 749 |
# File 'lib/narray_miss/narray_miss.rb', line 746 def newdim(*arg) obj = self.dup obj.newdim!(*arg) end |
#newdim!(*arg) ⇒ Object Also known as: rewrank!, rewrank=
739 740 741 742 743 |
# File 'lib/narray_miss/narray_miss.rb', line 739 def newdim!(*arg) @array = @array.newdim!(*arg) @mask = @mask.newdim!(*arg) self end |
#none? ⇒ Boolean
911 912 913 |
# File 'lib/narray_miss/narray_miss.rb', line 911 def none? @array[@mask].none? end |
#none_valid? ⇒ Boolean Also known as: all_invalid?
1115 1116 1117 |
# File 'lib/narray_miss/narray_miss.rb', line 1115 def none_valid? @mask.none? end |
#not ⇒ Object
504 505 506 |
# File 'lib/narray_miss/narray_miss.rb', line 504 def not NArrayMiss.to_nam_no_dup(@array.not, @mask.dup) end |
#or(arg) ⇒ Object
497 498 499 |
# File 'lib/narray_miss/narray_miss.rb', line 497 def or(arg) binary_operation(arg, 0){|t1, t2| t1.or t2} end |
#rank ⇒ Object
226 227 228 |
# File 'lib/narray_miss/narray_miss.rb', line 226 def rank @array.rank end |
#rank_total(*arg) ⇒ Object
238 239 240 |
# File 'lib/narray_miss/narray_miss.rb', line 238 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
935 936 937 |
# File 'lib/narray_miss/narray_miss.rb', line 935 def real NArrayMiss.to_nam_no_dup(@array.real,@mask) end |
#reshape(*arg) ⇒ Object
734 735 736 737 |
# File 'lib/narray_miss/narray_miss.rb', line 734 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!})).
729 730 731 732 733 |
# File 'lib/narray_miss/narray_miss.rb', line 729 def reshape!(*arg) @array = @array.reshape!(*arg) @mask = @mask.reshape!(*arg) self end |
#rms(*dims) ⇒ Object
607 608 609 610 611 612 613 614 615 616 |
# File 'lib/narray_miss/narray_miss.rb', line 607 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
617 618 619 620 621 622 623 624 625 626 627 |
# File 'lib/narray_miss/narray_miss.rb', line 617 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
787 788 789 |
# File 'lib/narray_miss/narray_miss.rb', line 787 def round NArrayMiss.to_nam_no_dup(@array.round, @mask.dup) end |
#sbt!(arg) ⇒ Object
413 414 415 |
# File 'lib/narray_miss/narray_miss.rb', line 413 def sbt!(arg) binary_operation(arg, 0){|t1, t2| t1.sbt!(t2)} end |
#set_invalid(*pos) ⇒ Object Also known as: invalidation
1036 1037 1038 1039 |
# File 'lib/narray_miss/narray_miss.rb', line 1036 def set_invalid(*pos) @mask[*pos] = 0 self end |
#set_mask(mask) ⇒ Object
1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 |
# File 'lib/narray_miss/narray_miss.rb', line 1049 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
1076 1077 1078 1079 |
# File 'lib/narray_miss/narray_miss.rb', line 1076 def set_missing_value(val) obj = self.dup obj.set_missing_value!(val) end |
#set_missing_value!(val) ⇒ Object
1072 1073 1074 1075 |
# File 'lib/narray_miss/narray_miss.rb', line 1072 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.
1031 1032 1033 1034 |
# File 'lib/narray_miss/narray_miss.rb', line 1031 def set_valid(*pos) @mask[*pos] = 1 self end |
#set_without_validation(*arg) ⇒ Object
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 |
# File 'lib/narray_miss/narray_miss.rb', line 284 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
229 230 231 |
# File 'lib/narray_miss/narray_miss.rb', line 229 def shape @array.shape end |
#size ⇒ Object Also known as: total, length
232 233 234 |
# File 'lib/narray_miss/narray_miss.rb', line 232 def size @array.size end |
#slice(*arg) ⇒ Object
280 281 282 |
# File 'lib/narray_miss/narray_miss.rb', line 280 def slice(*arg) NArrayMiss.to_nam_no_dup(@array.slice(*arg),@mask.slice(*arg)) end |
#stddev(*dims) ⇒ Object
596 597 598 599 600 601 602 603 604 605 606 |
# File 'lib/narray_miss/narray_miss.rb', line 596 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
558 559 560 561 562 563 564 565 566 |
# File 'lib/narray_miss/narray_miss.rb', line 558 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.
970 971 972 973 974 |
# File 'lib/narray_miss/narray_miss.rb', line 970 def swap_byte obj = self.dup obj.set_without_validation(@array.swap_byte) obj end |
#to_a ⇒ Object
800 801 802 |
# File 'lib/narray_miss/narray_miss.rb', line 800 def to_a @array.to_a end |
#to_f ⇒ Object
793 794 795 |
# File 'lib/narray_miss/narray_miss.rb', line 793 def to_f NArrayMiss.to_nam_no_dup(@array.to_f, @mask.dup) end |
#to_i ⇒ Object
790 791 792 |
# File 'lib/narray_miss/narray_miss.rb', line 790 def to_i NArrayMiss.to_nam_no_dup(@array.to_i, @mask.dup) end |
#to_na(*arg) ⇒ Object
813 814 815 |
# File 'lib/narray_miss/narray_miss.rb', line 813 def to_na(*arg) return self.dup.to_na!(*arg) end |
#to_na!(*arg) ⇒ Object
803 804 805 806 807 808 809 810 811 812 |
# File 'lib/narray_miss/narray_miss.rb', line 803 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: NArray#to_na([missing_value])") end end |
#to_s ⇒ Object
816 817 818 |
# File 'lib/narray_miss/narray_miss.rb', line 816 def to_s @array.to_s end |
#to_string ⇒ Object
819 820 821 822 823 824 |
# File 'lib/narray_miss/narray_miss.rb', line 819 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
797 798 799 |
# File 'lib/narray_miss/narray_miss.rb', line 797 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.
701 702 703 704 705 706 707 708 |
# File 'lib/narray_miss/narray_miss.rb', line 701 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
242 243 244 |
# File 'lib/narray_miss/narray_miss.rb', line 242 def typecode @array.typecode end |
#valid?(*arg) ⇒ Boolean
1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 |
# File 'lib/narray_miss/narray_miss.rb', line 1094 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
915 916 917 |
# File 'lib/narray_miss/narray_miss.rb', line 915 def where (@array&@mask).where end |
#where2 ⇒ Object
918 919 920 |
# File 'lib/narray_miss/narray_miss.rb', line 918 def where2 self.where-@mask.where end |
#xor(arg) ⇒ Object
500 501 502 |
# File 'lib/narray_miss/narray_miss.rb', line 500 def xor(arg) binary_operation(arg, 1){|t1, t2| t1.xor t2} end |
#|(arg) ⇒ Object
449 450 451 |
# File 'lib/narray_miss/narray_miss.rb', line 449 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)
443 444 445 |
# File 'lib/narray_miss/narray_miss.rb', line 443 def ~@ NArrayMiss.to_nam_to_dup(~@array, @mask.dup) end |