@@ -327,7 +327,7 @@ julia> mapreduce(isodd, |, a, dims=1)
327
327
1 1 1 1
328
328
```
329
329
"""
330
- mapreduce (f, op, A:: AbstractArrayOrBroadcasted ; dims= :, init= _InitialValue ()) =
330
+ mapreduce (f, op, A:: AbstractArrayOrBroadcasted ; dims:: D = :, init= _InitialValue ()) where {D} =
331
331
_mapreduce_dim (f, op, init, A, dims)
332
332
mapreduce (f, op, A:: AbstractArrayOrBroadcasted , B:: AbstractArrayOrBroadcasted... ; kw... ) =
333
333
reduce (op, map (f, A, B... ); kw... )
@@ -338,10 +338,10 @@ _mapreduce_dim(f, op, nt, A::AbstractArrayOrBroadcasted, ::Colon) =
338
338
_mapreduce_dim (f, op, :: _InitialValue , A:: AbstractArrayOrBroadcasted , :: Colon ) =
339
339
_mapreduce (f, op, IndexStyle (A), A)
340
340
341
- _mapreduce_dim (f, op, nt, A:: AbstractArrayOrBroadcasted , dims) =
341
+ _mapreduce_dim (f, op, nt, A:: AbstractArrayOrBroadcasted , dims:: D ) where {D} =
342
342
mapreducedim! (f, op, reducedim_initarray (A, dims, nt), A)
343
343
344
- _mapreduce_dim (f, op, :: _InitialValue , A:: AbstractArrayOrBroadcasted , dims) =
344
+ _mapreduce_dim (f, op, :: _InitialValue , A:: AbstractArrayOrBroadcasted , dims:: D ) where {D} =
345
345
mapreducedim! (f, op, reducedim_init (f, op, A, dims), A)
346
346
347
347
"""
@@ -409,8 +409,8 @@ julia> count(<=(2), A, dims=2)
409
409
0
410
410
```
411
411
"""
412
- count (A:: AbstractArrayOrBroadcasted ; dims= :, init= 0 ) = count (identity, A; dims, init)
413
- count (f, A:: AbstractArrayOrBroadcasted ; dims= :, init= 0 ) = _count (f, A, dims, init)
412
+ count (A:: AbstractArrayOrBroadcasted ; dims:: D = :, init= 0 ) where {D} = count (identity, A; dims, init)
413
+ count (f, A:: AbstractArrayOrBroadcasted ; dims:: D = :, init= 0 ) where {D} = _count (f, A, dims, init)
414
414
415
415
_count (f, A:: AbstractArrayOrBroadcasted , dims:: Colon , init) = _simple_count (f, A, init)
416
416
_count (f, A:: AbstractArrayOrBroadcasted , dims, init) = mapreduce (_bool (f), add_sum, A; dims, init)
@@ -980,20 +980,20 @@ for (fname, _fname, op) in [(:sum, :_sum, :add_sum), (:prod, :_prod,
980
980
mapf = fname === :extrema ? :(ExtremaMap (f)) : :f
981
981
@eval begin
982
982
# User-facing methods with keyword arguments
983
- @inline ($ fname)(a:: AbstractArray ; dims= :, kw... ) = ($ _fname)(a, dims; kw... )
984
- @inline ($ fname)(f, a:: AbstractArray ; dims= :, kw... ) = ($ _fname)(f, a, dims; kw... )
983
+ @inline ($ fname)(a:: AbstractArray ; dims:: D = :, kw... ) where {D} = ($ _fname)(a, dims; kw... )
984
+ @inline ($ fname)(f, a:: AbstractArray ; dims:: D = :, kw... ) where {D} = ($ _fname)(f, a, dims; kw... )
985
985
986
986
# Underlying implementations using dispatch
987
987
($ _fname)(a, :: Colon ; kw... ) = ($ _fname)(identity, a, :; kw... )
988
988
($ _fname)(f, a, :: Colon ; kw... ) = mapreduce ($ mapf, $ op, a; kw... )
989
989
end
990
990
end
991
991
992
- any (a:: AbstractArray ; dims= :) = _any (a, dims)
993
- any (f:: Function , a:: AbstractArray ; dims= :) = _any (f, a, dims)
992
+ any (a:: AbstractArray ; dims:: D = :) where {D} = _any (a, dims)
993
+ any (f:: Function , a:: AbstractArray ; dims:: D = :) where {D} = _any (f, a, dims)
994
994
_any (a, :: Colon ) = _any (identity, a, :)
995
- all (a:: AbstractArray ; dims= :) = _all (a, dims)
996
- all (f:: Function , a:: AbstractArray ; dims= :) = _all (f, a, dims)
995
+ all (a:: AbstractArray ; dims:: D = :) where {D} = _all (a, dims)
996
+ all (f:: Function , a:: AbstractArray ; dims:: D = :) where {D} = _all (f, a, dims)
997
997
_all (a, :: Colon ) = _all (identity, a, :)
998
998
999
999
for (fname, op) in [(:sum , :add_sum ), (:prod , :mul_prod ),
@@ -1008,8 +1008,8 @@ for (fname, op) in [(:sum, :add_sum), (:prod, :mul_prod),
1008
1008
mapreducedim! ($ mapf, $ (op), initarray! (r, $ mapf, $ (op), init, A), A)
1009
1009
$ (fname!)(r:: AbstractArray , A:: AbstractArray ; init:: Bool = true ) = $ (fname!)(identity, r, A; init= init)
1010
1010
1011
- $ (_fname)(A, dims; kw... ) = $ (_fname)(identity, A, dims; kw... )
1012
- $ (_fname)(f, A, dims; kw... ) = mapreduce ($ mapf, $ (op), A; dims= dims, kw... )
1011
+ $ (_fname)(A, dims:: D ; kw... ) where {D} = $ (_fname)(identity, A, dims; kw... )
1012
+ $ (_fname)(f, A, dims:: D ; kw... ) where {D} = mapreduce ($ mapf, $ (op), A; dims= dims, kw... )
1013
1013
end
1014
1014
end
1015
1015
@@ -1100,8 +1100,8 @@ julia> findmin(A, dims=2)
1100
1100
([1.0; 3.0;;], CartesianIndex{2}[CartesianIndex(1, 1); CartesianIndex(2, 1);;])
1101
1101
```
1102
1102
"""
1103
- findmin (A:: AbstractArray ; dims= :) = _findmin (A, dims)
1104
- _findmin (A, dims) = _findmin (identity, A, dims)
1103
+ findmin (A:: AbstractArray ; dims:: D = :) where {D} = _findmin (A, dims)
1104
+ _findmin (A, dims:: D ) where {D} = _findmin (identity, A, dims)
1105
1105
1106
1106
"""
1107
1107
findmin(f, A; dims) -> (f(x), index)
@@ -1123,9 +1123,9 @@ julia> findmin(abs2, A, dims=2)
1123
1123
([1.0; 0.25;;], CartesianIndex{2}[CartesianIndex(1, 1); CartesianIndex(2, 1);;])
1124
1124
```
1125
1125
"""
1126
- findmin (f, A:: AbstractArray ; dims= :) = _findmin (f, A, dims)
1126
+ findmin (f, A:: AbstractArray ; dims:: D = :) where {D} = _findmin (f, A, dims)
1127
1127
1128
- function _findmin (f, A, region)
1128
+ function _findmin (f, A, region:: D ) where {D}
1129
1129
ri = reduced_indices0 (A, region)
1130
1130
if isempty (A)
1131
1131
if prod (map (length, reduced_indices (A, region))) != 0
@@ -1173,8 +1173,8 @@ julia> findmax(A, dims=2)
1173
1173
([2.0; 4.0;;], CartesianIndex{2}[CartesianIndex(1, 2); CartesianIndex(2, 2);;])
1174
1174
```
1175
1175
"""
1176
- findmax (A:: AbstractArray ; dims= :) = _findmax (A, dims)
1177
- _findmax (A, dims) = _findmax (identity, A, dims)
1176
+ findmax (A:: AbstractArray ; dims:: D = :) where {D} = _findmax (A, dims)
1177
+ _findmax (A, dims:: D ) where {D} = _findmax (identity, A, dims)
1178
1178
1179
1179
"""
1180
1180
findmax(f, A; dims) -> (f(x), index)
@@ -1196,9 +1196,9 @@ julia> findmax(abs2, A, dims=2)
1196
1196
([1.0; 4.0;;], CartesianIndex{2}[CartesianIndex(1, 1); CartesianIndex(2, 2);;])
1197
1197
```
1198
1198
"""
1199
- findmax (f, A:: AbstractArray ; dims= :) = _findmax (f, A, dims)
1199
+ findmax (f, A:: AbstractArray ; dims:: D = :) where {D} = _findmax (f, A, dims)
1200
1200
1201
- function _findmax (f, A, region)
1201
+ function _findmax (f, A, region:: D ) where {D}
1202
1202
ri = reduced_indices0 (A, region)
1203
1203
if isempty (A)
1204
1204
if prod (map (length, reduced_indices (A, region))) != 0
@@ -1247,7 +1247,7 @@ julia> argmin(A, dims=2)
1247
1247
CartesianIndex(2, 1)
1248
1248
```
1249
1249
"""
1250
- argmin (A:: AbstractArray ; dims= :) = findmin (A; dims= dims)[2 ]
1250
+ argmin (A:: AbstractArray ; dims:: D = :) where {D} = findmin (A; dims= dims)[2 ]
1251
1251
1252
1252
"""
1253
1253
argmax(A; dims) -> indices
@@ -1272,4 +1272,4 @@ julia> argmax(A, dims=2)
1272
1272
CartesianIndex(2, 2)
1273
1273
```
1274
1274
"""
1275
- argmax (A:: AbstractArray ; dims= :) = findmax (A; dims= dims)[2 ]
1275
+ argmax (A:: AbstractArray ; dims:: D = :) where {D} = findmax (A; dims= dims)[2 ]
0 commit comments