After a taking a closer look at the `np.choose` docs I think we should change 
`choices: npt.ArrayLike` into `choices: Sequence[npt.ArrayLike]`.

This would resolve the issue, but it’d also mean that directly passing an array 
will be prohibited (as far as type checkers are concerned).
The docs do mention that the outermost container should be a list or tuple 
anyway, so I’m not convinced that this new typing restriction would be a huge 
loss.

Regards, Bas

From: NumPy-Discussion 
<[email protected]> On Behalf Of 
Kevin Sheppard
Sent: 18 April 2021 20:08
To: Discussion of Numerical Python <[email protected]>
Subject: Re: [Numpy-discussion] two questions about `choose`

Oh. I answered thinking about choice and not choose. Please ignore both parts.

On Sun, Apr 18, 2021, 17:56 Robert Kern 
<[email protected]<mailto:[email protected]>> wrote:
On Sat, Apr 17, 2021 at 4:28 PM Kevin Sheppard 
<[email protected]<mailto:[email protected]>> wrote:
1. I suppose it only uses the (Native int or int64) dtype since each one would 
need a code path to run quickly.

2. I would describe this a a bug. I think sequences are converted to arrays and 
in this case the conversion is not returning a 2 element object array but 
expanding and then concatenation.

No, it's broadcasting the two to a common shape, as documented.
https://numpy.org/doc/stable/reference/generated/numpy.choose.html

E.g.,
a = a = (0,1,1,0,0,0,1,1)  #binary array
np.choose(a, (0,range(8))     #array([0, 1, 2, 0, 0, 0, 6, 7])

This is equivalent to `np.choose(a, (np.zeros(8, dtype=int), range(8)))`

--
Robert Kern
_______________________________________________
NumPy-Discussion mailing list
[email protected]<mailto:[email protected]>
https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
[email protected]
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to