BUG: Allow np.percentile to operate on float16 data #29105
+67
−21
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.
Fixes #29003
The approach taken to address the issue is to perform index calculations with increased precision, but keep the behaviour that for
arr
of dtypefloat16
the outputnp.quantile(arr, q)
is of the same type.The behaviour to have the same output type makes sense for float input, but cannot hold for integer input. E.g. we want
np.quantile([1, 2], 0.5, method='linear')
to output 1.5. For that reason it might also be ok to just upcase the type to float64.There are also some corner cases. For example input (of either the array or the quantile) of type
Fraction
. Possible output types could be eitherFraction
orfloat64
.