Presumably you would extend that to all (str, np.number), or even (str,
np.generic_)?
I suppose there’s the argument that with python-3-only support around the
corner, even (str, bytes) should go to object.

Right now, promote_types gives examples in the docs of int/string
conversions, so changing it might be tricky.
On the other hand, the docs also falsely claim that the conversion is
associative <https://github.com/numpy/numpy/pull/10554/files>, which your
proposed change would fix.
​

On Thu, 8 Feb 2018 at 22:12 Stephan Hoyer <sho...@gmail.com> wrote:

> This is one of my oldest NumPy pain-points:
> >>> np.array([1, 2, 'three'])
> array(['1', '2', 'three'],
>       dtype='<U21')
>
> This is almost never what I want. In many cases, I simply write
> dtype=object, but for others (e.g., numpy.where), it's a minor annoyance to
> explicitly cast inputs to the right type.
>
> Autoconverting numbers into strings occasionally introduces real bugs
> (e.g., where using `np.nan` as a sentinel value for NA when working with
> strings, as in https://github.com/pydata/xarray/pull/1847), but mostly
> just hides bugs until later. It's certainly very un-Pythonic.
>
> The sane promotion rule would be `np.promote_types(str, float) -> object`,
> not a size 32 string.
>
> Is it way too late to fix this for NumPy, or is this something we could
> change in a major release? It would certainly need at least a deprecation
> cycle. This is easy enough to introduce accidentally that there are
> undoubtedly many users whose code would break if we changed this.
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to