[Numpy-discussion] Setting scalar values from strings, what to do?
Charles R Harris
charlesr.harris at gmail.com
Sun Apr 13 02:12:15 EDT 2008
Reposting the comment I left on ticket #736 because I think we need to
decide how conversion of strings to scalars should work.
There is more to this problem:
>
>
> {{{
> In [5]: int8('1')
> ------------------------------
> ---------------------------------------------
> ValueError Traceback (most recent call
> last)
>
> /home/charris/<ipython console> in <module>()
>
> ValueError: setting an array element with a sequence.
>
> In [6]: int16('1')
>
> ---------------------------------------------------------------------------
> ValueError Traceback (most recent call
> last)
>
> /home/charris/<ipython console> in <module>()
>
> ValueError: setting an array element with a sequence.
>
> In [7]: int32('1')
> Out[7]: 1
>
> In [8]: int64('1')
> Out[8]: array([1], dtype=int64)
>
> In [9]: uint8('1')
>
> ---------------------------------------------------------------------------
> ValueError Traceback (most recent call
> last)
>
> /home/charris/<ipython console> in <module>()
>
> ValueError: setting an array element with a sequence.
>
> In [10]: uint16('1')
>
> ---------------------------------------------------------------------------
> ValueError Traceback (most recent call
> last)
>
> /home/charris/<ipython console> in <module>()
>
> ValueError: setting an array element with a sequence.
>
> In [11]: uint32('1')
> Out[11]: array([1], dtype=uint32)
>
> In [12]: uint64('1')
> Out[12]: array([1], dtype=uint64)
>
>
> }}}
>
>
> The ones that return arrays go though numpy routines that call
> PyNumber_Long on the string. I suspect int32 is a subtype of the python
> int so that it returns a number. We also have
>
>
> {{{
> In [10]: array('11',dtype=uint64)
> Out[10]: array([1, 1], dtype=uint64)
>
> In [11]: array('11',dtype=int8)
>
> ---------------------------------------------------------------------------
> ValueError Traceback (most recent call
> last)
>
> /home/charris/<ipython console> in <module>()
>
> ValueError: setting an array element with a sequence.
>
> In [12]: array('11').astype(int8)
> Out[12]: array(11, dtype=int8)
> }}}
>
>
>
> In other words, we have an inconsistent mess on our hands. I think we
> need
> to decide what the behavior for all these functions should be, along with
> floats and complex, when presented with strings. And what to do when the
> strings are out of range. These problems arise in the setitem functions
> in
> arraytypes.inc.src and, I suspect, in the array function itself which
> treats the astype method and dtype keyword differently when strings are
> passed in.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20080413/7c23266f/attachment.html>
More information about the NumPy-Discussion
mailing list