summaryrefslogtreecommitdiff
path: root/doc/source/reference/c-api
diff options
context:
space:
mode:
authorSebastian Berg <sebastian@sipsolutions.net>2019-11-18 16:13:06 -0800
committerSebastian Berg <sebastian@sipsolutions.net>2019-11-21 17:06:02 -0800
commitc5da77d47309b6bf11f13f3b2e760f9b21423427 (patch)
tree621cf8e0f25bb362788683dbbba2b89fb3366611 /doc/source/reference/c-api
parent9aeb7513019954718a3225fbab24bdbb98ca4fd5 (diff)
downloadnumpy-c5da77d47309b6bf11f13f3b2e760f9b21423427.tar.gz
API: Use `ResultType` in `PyArray_ConvertToCommonType`
This slightly modifies the behaviour of `np.choose` (practically a bug fix) and the public function itself. The function is not used within e.g. SciPy, so the small performance hit of this implementation is probably insignificant. The change should help clean up dtypes a bit, since the whole "scalar cast" logic is brittle and should be deprecated/removed, and this is probably one of the few places actually using it. The choose change means that: ``` np.choose([0], (1000, np.array([1], dtype=np.uint8))) ``` will actually return a value of 1000 (the dtype not being uint8).
Diffstat (limited to 'doc/source/reference/c-api')
-rw-r--r--doc/source/reference/c-api/array.rst20
1 files changed, 12 insertions, 8 deletions
diff --git a/doc/source/reference/c-api/array.rst b/doc/source/reference/c-api/array.rst
index 0530a5747..c910efa60 100644
--- a/doc/source/reference/c-api/array.rst
+++ b/doc/source/reference/c-api/array.rst
@@ -1255,14 +1255,18 @@ Converting data types
Convert a sequence of Python objects contained in *op* to an array
of ndarrays each having the same data type. The type is selected
- based on the typenumber (larger type number is chosen over a
- smaller one) ignoring objects that are only scalars. The length of
- the sequence is returned in *n*, and an *n* -length array of
- :c:type:`PyArrayObject` pointers is the return value (or ``NULL`` if an
- error occurs). The returned array must be freed by the caller of
- this routine (using :c:func:`PyDataMem_FREE` ) and all the array objects
- in it ``DECREF`` 'd or a memory-leak will occur. The example
- template-code below shows a typically usage:
+ in the same way as `PyArray_ResultType`. The length of the sequence is
+ returned in *n*, and an *n* -length array of :c:type:`PyArrayObject`
+ pointers is the return value (or ``NULL`` if an error occurs).
+ The returned array must be freed by the caller of this routine
+ (using :c:func:`PyDataMem_FREE` ) and all the array objects in it
+ ``DECREF`` 'd or a memory-leak will occur. The example template-code
+ below shows a typically usage:
+
+ .. versionchanged:: 1.18.0
+ A mix of scalars and zero-dimensional arrays now produces a type
+ capable of holding the scalar value.
+ Previously priority was given to the dtype of the arrays.
.. code-block:: c