# [Numpy-discussion] np.zeros(2, 'S') returns empty strings.

Charles R Harris charlesr.harris@gmail....
Sat Jan 14 22:01:09 CST 2012

```On Sat, Jan 14, 2012 at 5:21 PM, <josef.pktd@gmail.com> wrote:

> On Sat, Jan 14, 2012 at 5:25 PM, Benjamin Root <ben.root@ou.edu> wrote:
> > On Sat, Jan 14, 2012 at 4:16 PM, Benjamin Root <ben.root@ou.edu> wrote:
> >>
> >> On Sat, Jan 14, 2012 at 4:12 PM, Charles R Harris
> >> <charlesr.harris@gmail.com> wrote:
> >>>
> >>> This sort of makes sense, but is it the 'correct' behavior?
> >>>
> >>> In [20]: zeros(2, 'S')
> >>> Out[20]:
> >>> array(['', ''],
> >>>       dtype='|S1')
> >>>
> >>> It might be more consistent to return '0' instead, as in
> >>>
> >>> In [3]: zeros(2, int).astype('S')
> >>> Out[3]:
> >>> array(['0', '0'],
> >>>       dtype='|S24')
>
>
>
> I would be surprised if zeros is not an empty string, since an empty
> string is the "zero" for string addition.
> multiplication for strings doesn't exist, so ones can be anything even
> literally '1'
>
> >>> a = np.zeros(5,'S4')
> >>> a[:] = 'b'
> >>> reduce(lambda x,y: x+y, a)
> 'bbbbb'
>
>
> >>> a = np.zeros(1,'S100')
> >>> for i in range(5): a[:] = a.item() + 'a'
> ...
> >>> a
> array(['aaaaa'],
>      dtype='|S100')
>
>
> just as a logical argument, I have no idea what's practical since last
> time I tried to use numpy strings, I didn't find string addition and
> went back to double and triple list comprehension.
>
>
I don't think it was quite so cleverly reasoned out ;) The functions works
as expected for object arrays, but that is the only exception. For all
other types the allocated space is simply filled with zero bytes. Too bad
this isn't done in python like ones, it would be easier to fix.

<snip>

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20120114/b8784270/attachment.html
```