@@ -24,12 +24,12 @@ function mean(f::Callable, iterable)
24
24
return total/ count
25
25
end
26
26
mean (iterable) = mean (identity, iterable)
27
- mean (f:: Callable , A:: AbstractArray ) = sum (f, A) / length (A)
28
- mean (A:: AbstractArray ) = sum (A) / length (A)
27
+ mean (f:: Callable , A:: AbstractArray ) = sum (f, A) / _length (A)
28
+ mean (A:: AbstractArray ) = sum (A) / _length (A)
29
29
30
30
function mean! {T} (R:: AbstractArray{T} , A:: AbstractArray )
31
31
sum! (R, A; init= true )
32
- scale! (R, length (R) / length (A))
32
+ scale! (R, _length (R) / _length (A))
33
33
return R
34
34
end
35
35
@@ -140,7 +140,7 @@ function centralize_sumabs2!{S,T,N}(R::AbstractArray{S}, A::AbstractArray{T,N},
140
140
end
141
141
142
142
function varm {T} (A:: AbstractArray{T} , m:: Number ; corrected:: Bool = true )
143
- n = length (A)
143
+ n = _length (A)
144
144
n == 0 && return convert (real (momenttype (T)), NaN )
145
145
n == 1 && return convert (real (momenttype (T)), abs2 (A[1 ] - m)/ (1 - Int (corrected)))
146
146
return centralize_sumabs2 (A, m) / (n - Int (corrected))
@@ -150,7 +150,7 @@ function varm!{S}(R::AbstractArray{S}, A::AbstractArray, m::AbstractArray; corre
150
150
if isempty (A)
151
151
fill! (R, convert (S, NaN ))
152
152
else
153
- rn = div (length (A), length (R)) - Int (corrected)
153
+ rn = div (_length (A), _length (R)) - Int (corrected)
154
154
scale! (centralize_sumabs2! (R, A, m), convert (S, 1 / rn))
155
155
end
156
156
return R
@@ -282,7 +282,7 @@ stdm(iterable, m::Number; corrected::Bool=true) =
282
282
_conj {T<:Real} (x:: AbstractArray{T} ) = x
283
283
_conj (x:: AbstractArray ) = conj (x)
284
284
285
- _getnobs (x:: AbstractVector , vardim:: Int ) = length (x)
285
+ _getnobs (x:: AbstractVector , vardim:: Int ) = _length (x)
286
286
_getnobs (x:: AbstractMatrix , vardim:: Int ) = size (x, vardim)
287
287
288
288
function _getnobs (x:: AbstractVecOrMat , y:: AbstractVecOrMat , vardim:: Int )
@@ -309,11 +309,11 @@ unscaled_covzm(x::AbstractMatrix, y::AbstractMatrix, vardim::Int) =
309
309
310
310
# covzm (with centered data)
311
311
312
- covzm (x:: AbstractVector , corrected:: Bool = true ) = unscaled_covzm (x) / (length (x) - Int (corrected))
312
+ covzm (x:: AbstractVector , corrected:: Bool = true ) = unscaled_covzm (x) / (_length (x) - Int (corrected))
313
313
covzm (x:: AbstractMatrix , vardim:: Int = 1 , corrected:: Bool = true ) =
314
314
scale! (unscaled_covzm (x, vardim), inv (size (x,vardim) - Int (corrected)))
315
315
covzm (x:: AbstractVector , y:: AbstractVector , corrected:: Bool = true ) =
316
- unscaled_covzm (x, y) / (length (x) - Int (corrected))
316
+ unscaled_covzm (x, y) / (_length (x) - Int (corrected))
317
317
covzm (x:: AbstractVecOrMat , y:: AbstractVecOrMat , vardim:: Int = 1 , corrected:: Bool = true ) =
318
318
scale! (unscaled_covzm (x, y, vardim), inv (_getnobs (x, y, vardim) - Int (corrected)))
319
319
@@ -568,16 +568,18 @@ function median!{T}(v::AbstractVector{T})
568
568
isnan (x) && return x
569
569
end
570
570
end
571
- n = length (v)
571
+ inds = indices (v, 1 )
572
+ n = length (inds)
573
+ mid = div (first (inds)+ last (inds),2 )
572
574
if isodd (n)
573
- return middle (select! (v,div (n + 1 , 2 ) ))
575
+ return middle (select! (v,mid ))
574
576
else
575
- m = select! (v, div (n, 2 ) : div (n, 2 ) + 1 )
577
+ m = select! (v, mid : mid + 1 )
576
578
return middle (m[1 ], m[2 ])
577
579
end
578
580
end
579
581
median! {T} (v:: AbstractArray{T} ) = median! (vec (v))
580
- median {T} (v:: AbstractArray{T} ) = median! (copy! (Array {T,1} (length (v)), v))
582
+ median {T} (v:: AbstractArray{T} ) = median! (copy! (Array {T,1} (_length (v)), v))
581
583
582
584
"""
583
585
median(v[, region])
0 commit comments