Construct an array from an index array and a list of arrays to choose from. First of all, if confused or uncertain, definitely look at the Examples - in its full generality, this function is less simple than it might seem from the following code description:: np.choose(a,c
(a, choices, out=None, mode='raise')
| 307 | |
| 308 | @array_function_dispatch(_choose_dispatcher) |
| 309 | def choose(a, choices, out=None, mode='raise'): |
| 310 | """ |
| 311 | Construct an array from an index array and a list of arrays to choose from. |
| 312 | |
| 313 | First of all, if confused or uncertain, definitely look at the Examples - |
| 314 | in its full generality, this function is less simple than it might |
| 315 | seem from the following code description:: |
| 316 | |
| 317 | np.choose(a,c) == np.array([c[a[I]][I] for I in np.ndindex(a.shape)]) |
| 318 | |
| 319 | But this omits some subtleties. Here is a fully general summary: |
| 320 | |
| 321 | Given an "index" array (`a`) of integers and a sequence of ``n`` arrays |
| 322 | (`choices`), `a` and each choice array are first broadcast, as necessary, |
| 323 | to arrays of a common shape; calling these *Ba* and *Bchoices[i], i = |
| 324 | 0,...,n-1* we have that, necessarily, ``Ba.shape == Bchoices[i].shape`` |
| 325 | for each ``i``. Then, a new array with shape ``Ba.shape`` is created as |
| 326 | follows: |
| 327 | |
| 328 | * if ``mode='raise'`` (the default), then, first of all, each element of |
| 329 | ``a`` (and thus ``Ba``) must be in the range ``[0, n-1]``; now, suppose |
| 330 | that ``i`` (in that range) is the value at the ``(j0, j1, ..., jm)`` |
| 331 | position in ``Ba`` - then the value at the same position in the new array |
| 332 | is the value in ``Bchoices[i]`` at that same position; |
| 333 | |
| 334 | * if ``mode='wrap'``, values in `a` (and thus `Ba`) may be any (signed) |
| 335 | integer; modular arithmetic is used to map integers outside the range |
| 336 | `[0, n-1]` back into that range; and then the new array is constructed |
| 337 | as above; |
| 338 | |
| 339 | * if ``mode='clip'``, values in `a` (and thus ``Ba``) may be any (signed) |
| 340 | integer; negative integers are mapped to 0; values greater than ``n-1`` |
| 341 | are mapped to ``n-1``; and then the new array is constructed as above. |
| 342 | |
| 343 | Parameters |
| 344 | ---------- |
| 345 | a : int array |
| 346 | This array must contain integers in ``[0, n-1]``, where ``n`` is the |
| 347 | number of choices, unless ``mode=wrap`` or ``mode=clip``, in which |
| 348 | cases any integers are permissible. |
| 349 | choices : sequence of arrays |
| 350 | Choice arrays. `a` and all of the choices must be broadcastable to the |
| 351 | same shape. If `choices` is itself an array (not recommended), then |
| 352 | its outermost dimension (i.e., the one corresponding to |
| 353 | ``choices.shape[0]``) is taken as defining the "sequence". |
| 354 | out : array, optional |
| 355 | If provided, the result will be inserted into this array. It should |
| 356 | be of the appropriate shape and dtype. Note that `out` is always |
| 357 | buffered if ``mode='raise'``; use other modes for better performance. |
| 358 | mode : {'raise' (default), 'wrap', 'clip'}, optional |
| 359 | Specifies how indices outside ``[0, n-1]`` will be treated: |
| 360 | |
| 361 | * 'raise' : an exception is raised |
| 362 | * 'wrap' : value becomes value mod ``n`` |
| 363 | * 'clip' : values < 0 are mapped to 0, values > n-1 are mapped to n-1 |
| 364 | |
| 365 | Returns |
| 366 | ------- |
nothing calls this directly
no test coverage detected
searching dependent graphs…