6
6
#
7
7
# ################################################
8
8
9
- const IntUnitRange{T<: Integer } = UnitRange{T}
10
-
11
9
if isdefined (Base, :ht_keyindex2 )
12
10
const ht_keyindex2! = Base. ht_keyindex2
13
11
else
@@ -24,14 +22,14 @@ array `r`. For each `xi ∈ x`, if `xi == levels[j]`, then we increment `r[j]`.
24
22
If a weighting vector `wv` is specified, the sum of weights is used rather than the
25
23
raw counts.
26
24
"""
27
- function addcounts! (r:: AbstractArray , x:: IntegerArray , levels:: IntUnitRange )
25
+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} )
28
26
# add counts of integers from x that fall within levels to r
29
27
30
28
checkbounds (r, axes (levels)... )
31
29
32
30
m0 = first (levels)
33
31
m1 = last (levels)
34
- b = m0 - firstindex (levels) # firstindex(levels) == 1 because levels::IntUnitRange
32
+ b = m0 - firstindex (levels) # firstindex(levels) == 1 because levels::UnitRange{<:Integer}
35
33
36
34
@inbounds for xi in x
37
35
if m0 <= xi <= m1
@@ -41,7 +39,7 @@ function addcounts!(r::AbstractArray, x::IntegerArray, levels::IntUnitRange)
41
39
return r
42
40
end
43
41
44
- function addcounts! (r:: AbstractArray , x:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights )
42
+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights )
45
43
# add wv weighted counts of integers from x that fall within levels to r
46
44
47
45
length (x) == length (wv) ||
@@ -82,14 +80,14 @@ The output is a vector of length `length(levels)`.
82
80
"""
83
81
function counts end
84
82
85
- counts (x:: IntegerArray , levels:: IntUnitRange ) =
83
+ counts (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} ) =
86
84
addcounts! (zeros (Int, length (levels)), x, levels)
87
- counts (x:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights ) =
85
+ counts (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights ) =
88
86
addcounts! (zeros (eltype (wv), length (levels)), x, levels, wv)
89
- counts (x:: IntegerArray , k:: Integer ) = counts (x, 1 : k)
90
- counts (x:: IntegerArray , k:: Integer , wv:: AbstractWeights ) = counts (x, 1 : k, wv)
91
- counts (x:: IntegerArray ) = counts (x, span (x))
92
- counts (x:: IntegerArray , wv:: AbstractWeights ) = counts (x, span (x), wv)
87
+ counts (x:: AbstractArray{<:Integer} , k:: Integer ) = counts (x, 1 : k)
88
+ counts (x:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) = counts (x, 1 : k, wv)
89
+ counts (x:: AbstractArray{<:Integer} ) = counts (x, span (x))
90
+ counts (x:: AbstractArray{<:Integer} , wv:: AbstractWeights ) = counts (x, span (x), wv)
93
91
94
92
95
93
"""
@@ -101,8 +99,8 @@ Equivalent to `counts(x, levels) / length(x)`.
101
99
If a vector of weights `wv` is provided, the proportion of weights is computed rather
102
100
than the proportion of raw counts.
103
101
"""
104
- proportions (x:: IntegerArray , levels:: IntUnitRange ) = counts (x, levels) .* inv (length (x))
105
- proportions (x:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights ) =
102
+ proportions (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} ) = counts (x, levels) .* inv (length (x))
103
+ proportions (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights ) =
106
104
counts (x, levels, wv) .* inv (sum (wv))
107
105
108
106
"""
@@ -113,14 +111,14 @@ Return the proportion of integers in 1 to `k` that occur in `x`.
113
111
If a vector of weights `wv` is provided, the proportion of weights is computed rather
114
112
than the proportion of raw counts.
115
113
"""
116
- proportions (x:: IntegerArray , k:: Integer ) = proportions (x, 1 : k)
117
- proportions (x:: IntegerArray , k:: Integer , wv:: AbstractWeights ) = proportions (x, 1 : k, wv)
118
- proportions (x:: IntegerArray ) = proportions (x, span (x))
119
- proportions (x:: IntegerArray , wv:: AbstractWeights ) = proportions (x, span (x), wv)
114
+ proportions (x:: AbstractArray{<:Integer} , k:: Integer ) = proportions (x, 1 : k)
115
+ proportions (x:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) = proportions (x, 1 : k, wv)
116
+ proportions (x:: AbstractArray{<:Integer} ) = proportions (x, span (x))
117
+ proportions (x:: AbstractArray{<:Integer} , wv:: AbstractWeights ) = proportions (x, span (x), wv)
120
118
121
119
# ### functions for counting a single list of integers (2D)
122
120
123
- function addcounts! (r:: AbstractArray , x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } )
121
+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } )
124
122
# add counts of pairs from zip(x,y) to r
125
123
126
124
xlevels, ylevels = levels
@@ -146,8 +144,8 @@ function addcounts!(r::AbstractArray, x::IntegerArray, y::IntegerArray, levels::
146
144
return r
147
145
end
148
146
149
- function addcounts! (r:: AbstractArray , x:: IntegerArray , y:: IntegerArray ,
150
- levels:: NTuple{2,IntUnitRange } , wv:: AbstractWeights )
147
+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} ,
148
+ levels:: NTuple{2,UnitRange{<:Integer} } , wv:: AbstractWeights )
151
149
# add counts of pairs from zip(x,y) to r
152
150
153
151
length (x) == length (y) == length (wv) ||
@@ -182,43 +180,43 @@ end
182
180
183
181
# facet functions
184
182
185
- function counts (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } )
183
+ function counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } )
186
184
addcounts! (zeros (Int, length (levels[1 ]), length (levels[2 ])), x, y, levels)
187
185
end
188
186
189
- function counts (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } , wv:: AbstractWeights )
187
+ function counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } , wv:: AbstractWeights )
190
188
addcounts! (zeros (eltype (wv), length (levels[1 ]), length (levels[2 ])), x, y, levels, wv)
191
189
end
192
190
193
- counts (x:: IntegerArray , y:: IntegerArray , levels:: IntUnitRange ) =
191
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} ) =
194
192
counts (x, y, (levels, levels))
195
- counts (x:: IntegerArray , y:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights ) =
193
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights ) =
196
194
counts (x, y, (levels, levels), wv)
197
195
198
- counts (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} ) =
196
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} ) =
199
197
counts (x, y, (1 : ks[1 ], 1 : ks[2 ]))
200
- counts (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
198
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
201
199
counts (x, y, (1 : ks[1 ], 1 : ks[2 ]), wv)
202
- counts (x:: IntegerArray , y:: IntegerArray , k:: Integer ) = counts (x, y, (1 : k, 1 : k))
203
- counts (x:: IntegerArray , y:: IntegerArray , k:: Integer , wv:: AbstractWeights ) =
200
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer ) = counts (x, y, (1 : k, 1 : k))
201
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) =
204
202
counts (x, y, (1 : k, 1 : k), wv)
205
- counts (x:: IntegerArray , y:: IntegerArray ) = counts (x, y, (span (x), span (y)))
206
- counts (x:: IntegerArray , y:: IntegerArray , wv:: AbstractWeights ) = counts (x, y, (span (x), span (y)), wv)
203
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} ) = counts (x, y, (span (x), span (y)))
204
+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , wv:: AbstractWeights ) = counts (x, y, (span (x), span (y)), wv)
207
205
208
- proportions (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } ) =
206
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } ) =
209
207
counts (x, y, levels) .* inv (length (x))
210
- proportions (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } , wv:: AbstractWeights ) =
208
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } , wv:: AbstractWeights ) =
211
209
counts (x, y, levels, wv) .* inv (sum (wv))
212
210
213
- proportions (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} ) =
211
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} ) =
214
212
proportions (x, y, (1 : ks[1 ], 1 : ks[2 ]))
215
- proportions (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
213
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
216
214
proportions (x, y, (1 : ks[1 ], 1 : ks[2 ]), wv)
217
- proportions (x:: IntegerArray , y:: IntegerArray , k:: Integer ) = proportions (x, y, (1 : k, 1 : k))
218
- proportions (x:: IntegerArray , y:: IntegerArray , k:: Integer , wv:: AbstractWeights ) =
215
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer ) = proportions (x, y, (1 : k, 1 : k))
216
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) =
219
217
proportions (x, y, (1 : k, 1 : k), wv)
220
- proportions (x:: IntegerArray , y:: IntegerArray ) = proportions (x, y, (span (x), span (y)))
221
- proportions (x:: IntegerArray , y:: IntegerArray , wv:: AbstractWeights ) =
218
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} ) = proportions (x, y, (span (x), span (y)))
219
+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , wv:: AbstractWeights ) =
222
220
proportions (x, y, (span (x), span (y)), wv)
223
221
224
222
0 commit comments