-
Notifications
You must be signed in to change notification settings - Fork 53
Add statistical function specifications #17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 5 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
6df0151
Add spec doc
kgryte 73cfa63
Add default
kgryte 70090ac
Add min and max
kgryte 9861a5e
Add references
kgryte 8218532
Add functions
kgryte dbb78a9
Rename file and update index
kgryte af52d52
Update wording
kgryte 40abb6f
Update to return zero-dimensional arrays instead of scalar values
kgryte 3bbca2b
Update types and descriptions
kgryte ff52f74
Add hyphen
kgryte File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,219 @@ | ||
# Statistical Reductions | ||
|
||
> Array API specification for statistical reductions. | ||
|
||
A conforming implementation of the array API standard must provide and support the following functions adhering to the following conventions. | ||
|
||
- Positional parameters must be [positional-only](https://www.python.org/dev/peps/pep-0570/) parameters. Positional-only parameters have no externally-usable name. When a function accepting positional-only parameters is called, positional arguments are mapped to these parameters based solely on their order. | ||
- Optional parameters must be [keyword-only](https://www.python.org/dev/peps/pep-3102/) arguments. | ||
- The `out` keyword argument must follow the conventions defined in :ref:`out-keyword`. | ||
kgryte marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- Broadcasting semantics must follow the semantics defined in :ref:`broadcasting`. | ||
- Unless stated otherwise, functions must support the data types defined in :ref:`data-types`. | ||
- Unless stated otherwise, functions must adhere to the type promotion rules defined in :ref:`type-promotion`. | ||
- Unless stated otherwise, floating-point operations must adhere to IEEE 754-2019. | ||
|
||
<!-- NOTE: please keep the functions in alphabetical order --> | ||
|
||
### <a name="max" href="#max">#</a> max(x, /, *, axis=None, keepdims=False, out=None) | ||
|
||
Calculates the maximum value of the input array `x`. | ||
|
||
#### Parameters | ||
|
||
- **x**: _<array>_ | ||
|
||
- input array. | ||
|
||
- **axis**: _Optional\[ Union\[ int, Tuple\[ int, ... ] ] ]_ | ||
|
||
- axis or axes along which maximum values must be computed. By default, the maximum value must be computed over the entire array. If a tuple of integers, maximum values must be computed over multiple axes. Default: `None`. | ||
|
||
- **keepdims**: _bool_ | ||
|
||
- If `True`, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see :ref:`broadcasting`). Otherwise, if `False`, the reduced axes (dimensions) must not be included in the result. Default: `False`. | ||
|
||
- **out**: _Optional\[ <array> ]_ | ||
|
||
- output array. If provided, the output array must have the expected output shape. If not provided or is `None`, an uninitialized return array must be created and then filled with the result of each computation. Default: `None`. | ||
|
||
#### Returns | ||
|
||
- **out**: _Union\[ int, float, <array> ]_ | ||
kgryte marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- if the maximum value was computed over the entire array, the maximum value; otherwise, an array containing the maximum values. | ||
|
||
### <a name="mean" href="#mean">#</a> mean(x, /, *, axis=None, keepdims=False, out=None) | ||
|
||
Calculates the arithmetic mean of the input array `x`. | ||
|
||
#### Parameters | ||
|
||
- **x**: _<array>_ | ||
|
||
- input array. | ||
|
||
- **axis**: _Optional\[ Union\[ int, Tuple\[ int, ... ] ] ]_ | ||
|
||
- axis or axes along which arithmetic means must be computed. By default, the mean must be computed over the entire array. If a tuple of integers, arithmetic means must be computed over multiple axes. Default: `None`. | ||
|
||
- **keepdims**: _bool_ | ||
|
||
- If `True`, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see :ref:`broadcasting`). Otherwise, if `False`, the reduced axes (dimensions) must not be included in the result. Default: `False`. | ||
|
||
- **out**: _Optional\[ <array> ]_ | ||
|
||
- output array. If provided, the output array must have the expected output shape. If not provided or is `None`, an uninitialized return array must be created and then filled with the result of each computation. Default: `None`. | ||
|
||
#### Returns | ||
|
||
- **out**: _Union\[ float, <array> ]_ | ||
|
||
- if the arithmetic mean was computed over the entire array, the arithmetic mean; otherwise, an array containing the arithmetic means. | ||
|
||
### <a name="min" href="#min">#</a> min(x, /, *, axis=None, keepdims=False, out=None) | ||
|
||
Calculates the minimum value of the input array `x`. | ||
|
||
#### Parameters | ||
|
||
- **x**: _<array>_ | ||
|
||
- input array. | ||
|
||
- **axis**: _Optional\[ Union\[ int, Tuple\[ int, ... ] ] ]_ | ||
|
||
- axis or axes along which minimum values must be computed. By default, the minimum value must be computed over the entire array. If a tuple of integers, minimum values must be computed over multiple axes. Default: `None`. | ||
|
||
- **keepdims**: _bool_ | ||
|
||
- If `True`, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see :ref:`broadcasting`). Otherwise, if `False`, the reduced axes (dimensions) must not be included in the result. Default: `False`. | ||
|
||
- **out**: _Optional\[ <array> ]_ | ||
|
||
- output array. If provided, the output array must have the expected output shape. If not provided or is `None`, an uninitialized return array must be created and then filled with the result of each computation. Default: `None`. | ||
|
||
#### Returns | ||
|
||
- **out**: _Union\[ int, float, <array> ]_ | ||
|
||
- if the minimum value was computed over the entire array, the minimum value; otherwise, an array containing the minimum values. | ||
|
||
### <a name="prod" href="#prod">#</a> prod(x, /, *, axis=None, keepdims=False, out=None) | ||
|
||
Calculates the product of input array `x` elements. | ||
|
||
#### Parameters | ||
|
||
- **x**: _<array>_ | ||
|
||
- input array. | ||
|
||
- **axis**: _Optional\[ Union\[ int, Tuple\[ int, ... ] ] ]_ | ||
|
||
- axis or axes along which products must be computed. By default, the product must be computed over the entire array. If a tuple of integers, products must be computed over multiple axes. Default: `None`. | ||
|
||
- **keepdims**: _bool_ | ||
|
||
- If `True`, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see :ref:`broadcasting`). Otherwise, if `False`, the reduced axes (dimensions) must not be included in the result. Default: `False`. | ||
|
||
- **out**: _Optional\[ <array> ]_ | ||
|
||
- output array. If provided, the output array must have the expected output shape. If not provided or is `None`, an uninitialized return array must be created and then filled with the result of each computation. Default: `None`. | ||
|
||
#### Returns | ||
|
||
- **out**: _Union\[ int, float, <array> ]_ | ||
|
||
- if the product was computed over the entire array, the product; otherwise, an array containing the products. | ||
|
||
### <a name="std" href="#std">#</a> std(x, /, *, axis=None, correction=0.0, keepdims=False, out=None) | ||
|
||
Calculates the standard deviation of the input array `x`. | ||
|
||
#### Parameters | ||
|
||
- **x**: _<array>_ | ||
|
||
- input array. | ||
|
||
- **axis**: _Optional\[ Union\[ int, Tuple\[ int, ... ] ] ]_ | ||
|
||
- axis or axes along which standard deviations must be computed. By default, the standard deviation must be computed over the entire array. If a tuple of integers, standard deviations must be computed over multiple axes. Default: `None`. | ||
|
||
- **correction**: _float_ | ||
kgryte marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- degrees of freedom adjustment. Setting this parameter to a value other than `0.0` has the effect of adjusting the divisor during the calculation of the standard deviation according to `N-c` where `N` corresponds to the total number of elements over which the standard deviation is computed and `c` corresponds to the provided degrees of freedom adjustment. When computing the standard deviation of a population, setting this parameter to `0.0` is the standard choice (i.e., the provided array contains data constituting an entire population). When computing the corrected sample standard deviation, setting this parameter to `1.0` is the standard choice (i.e., the provided array contains data sampled from a larger population; this is commonly referred to as Bessel's correction). Default: `0.0`. | ||
|
||
- **keepdims**: _bool_ | ||
|
||
- If `True`, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see :ref:`broadcasting`). Otherwise, if `False`, the reduced axes (dimensions) must not be included in the result. Default: `False`. | ||
|
||
- **out**: _Optional\[ <array> ]_ | ||
|
||
- output array. If provided, the output array must have the expected output shape. If not provided or is `None`, an uninitialized return array must be created and then filled with the result of each computation. Default: `None`. | ||
|
||
#### Returns | ||
|
||
- **out**: _Union\[ float, <array> ]_ | ||
|
||
- if the standard deviation was computed over the entire array, the standard deviation; otherwise, an array containing the standard deviations. | ||
|
||
### <a name="sum" href="#sum">#</a> sum(x, /, *, axis=None, keepdims=False, out=None) | ||
|
||
Calculates the sum of the input array `x`. | ||
|
||
#### Parameters | ||
|
||
- **x**: _<array>_ | ||
|
||
- input array. | ||
|
||
- **axis**: _Optional\[ Union\[ int, Tuple\[ int, ... ] ] ]_ | ||
|
||
- axis or axes along which sums must be computed. By default, the sum must be computed over the entire array. If a tuple of integers, sums must be computed over multiple axes. Default: `None`. | ||
|
||
- **keepdims**: _bool_ | ||
|
||
- If `True`, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see :ref:`broadcasting`). Otherwise, if `False`, the reduced axes (dimensions) must not be included in the result. Default: `False`. | ||
|
||
- **out**: _Optional\[ <array> ]_ | ||
|
||
- output array. If provided, the output array must have the expected output shape. If not provided or is `None`, an uninitialized return array must be created and then filled with the result of each computation. Default: `None`. | ||
|
||
#### Returns | ||
|
||
- **out**: _Union\[ int, float, <array> ]_ | ||
|
||
- if the sum was computed over the entire array, the sum; otherwise, an array containing the sums. | ||
|
||
### <a name="var" href="#var">#</a> var(x, /, *, axis=None, correction=0.0, keepdims=False, out=None) | ||
|
||
Calculates the variance of the input array `x`. | ||
|
||
#### Parameters | ||
|
||
- **x**: _<array>_ | ||
|
||
- input array. | ||
|
||
- **axis**: _Optional\[ Union\[ int, Tuple\[ int, ... ] ] ]_ | ||
|
||
- axis or axes along which variances must be computed. By default, the variance must be computed over the entire array. If a tuple of integers, variances must be computed over multiple axes. Default: `None`. | ||
|
||
- **correction**: _float_ | ||
|
||
- degrees of freedom adjustment. Setting this parameter to a value other than `0.0` has the effect of adjusting the divisor during the calculation of the variance according to `N-c` where `N` corresponds to the total number of elements over which the variance is computed and `c` corresponds to the provided degrees of freedom adjustment. When computing the variance of a population, setting this parameter to `0.0` is the standard choice (i.e., the provided array contains data constituting an entire population). When computing the unbiased sample variance, setting this parameter to `1.0` is the standard choice (i.e., the provided array contains data sampled from a larger population; this is commonly referred to as Bessel's correction). Default: `0.0`. | ||
|
||
- **keepdims**: _bool_ | ||
|
||
- If `True`, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see :ref:`broadcasting`). Otherwise, if `False`, the reduced axes (dimensions) must not be included in the result. Default: `False`. | ||
|
||
- **out**: _Optional\[ <array> ]_ | ||
|
||
- output array. If provided, the output array must have the expected output shape. If not provided or is `None`, an uninitialized return array must be created and then filled with the result of each computation. Default: `None`. | ||
|
||
#### Returns | ||
|
||
- **out**: _Union\[ float, <array> ]_ | ||
|
||
- if the variance was computed over the entire array, the variance; otherwise, an array containing the variances. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.