On Wed, Feb 8, 2023 at 5:28 PM Sebastian Berg <sebast...@sipsolutions.net>
wrote:

> On Wed, 2023-02-08 at 17:08 +0100, Francesc Alted wrote:
> > On Wed, Feb 8, 2023 at 3:19 PM Sebastian Berg <
> > sebast...@sipsolutions.net>
> > wrote:
> >
> > > On Wed, 2023-02-08 at 14:31 +0100, Francesc Alted wrote:
> > > > On Wed, Feb 8, 2023 at 1:42 PM Sebastian Berg <
> > > > sebast...@sipsolutions.net>
> > > > wrote:
> > > >
> > > > > On Wed, 2023-02-08 at 12:48 +0100, Francesc Alted wrote:
> > > > > > Hi,
> > > > > >
> > > > > >
> > > > >
> > > > > <snip>
> > > > >
> > > > > > Is there a way (or an ongoing effort) to express the variety
> > > > > > of
> > > > > > data
> > > > > > types
> > > > > > in NumPy that beats the above (which seems somewhat
> > > > > > inconsistent
> > > > > > to
> > > > > > me)?
> > > > >
> > > > > How about using the Python buffer interface format string
> > > > > (maybe
> > > > > with
> > > > > some limitations).
> > > > >
> > > >
> > > > If you mean the array interface (
> > > > https://numpy.org/doc/stable/reference/arrays.interface.html),
> > > > this
> > > > is what
> > > > dtype.str provides (
> > > >
> https://numpy.org/doc/stable/reference/generated/numpy.dtype.str.html
> > > > ).
> > > > But the limitation here is that structured types are represented
> > > > by
> > > > the 'V'
> > > > char, which is not properly representing it by any means.
> > > >
> > >
> > > Ah, I was thinking of what the Python buffer protocol uses, which
> > > is
> > > what struct uses:
> > >
> > >     https://docs.python.org/3/library/struct.html#module-struct
> > >
> > > That has some annoyances for sure, and structured dtypes with field
> > > names need rather strange syntax.  Also I think padding bytes at
> > > best
> > > are simply fields with an empty name.
> > > But overall, it probably already does a better job than any `str()`
> > > for
> > > basic types:
> > >
> > > In [2]: import numpy as np
> > >
> > > In [3]: np.array(0, dtype="i,i,2f")
> > > Out[3]:
> > > array((0, 0, [0., 0.]),
> > >       dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<f4', (2,))])
> > >
> > > In [4]: memoryview(np.array(0, dtype="i,i,2f")).format
> > > Out[4]: 'T{i:f0:i:f1:(2)f:f2:}'
> > >
> >
> > Aha, that's pretty cool, although I don't think this is flexible
> > enough to
> > support e.g. field names or nested fields.  After pondering about it,
> > I
> > think we will add a format ID to our spec, and will stick with NumPy
> > as the
> > default.  If in the future another format appears that is more well
> > defined, we could still change the representation and use a new ID,
> > while
> > keeping backwards compatibility if needed.
> >
>
>
> It does support field names.  I think the main problem may be that it
> cannot support e.g. datetimes.  You probably also can't support empty
> field names (but maybe that is too weird to be useful anyway).
>

Right.  I don't think empty field names are useful, but not supporting
datetimes is a deal breaker for us.


>
> Not ethat in the output there `T{i:f0}` denotes that it is structured
> and the name is "f0".  And yes, you can nest another `T{}` inside.
>

Good to know.


>
> I am not sure whether type codes are limited to single characters
> (which IMO wouldn't be nice), which (to me) would seem a bit limited.
> I also think we may have to agree on e.g. an empty name denoting
> padding.
>

While I agree that the buffer format is a good effort, I consider the NumPy
representation pretty more complete (which makes sense, as it had to evolve
following user's needs more closely).  Still, I *hope* there will be an
effort in standarizing the NumPy format a bit more formally in the future.



>
> - Sebastian
>
>
> > Thanks!
> >
> >
> > >
> > > - Sebastian
> > >
> > >
> > > >
> > > > > But other than that, I don't have an obvious idea right now.
> > > > >
> > > > > - Sebsatian
> > > > >
> > > > > >
> > > > > > Thanks!
> > > > > > _______________________________________________
> > > > > > NumPy-Discussion mailing list -- numpy-discussion@python.org
> > > > > > To unsubscribe send an email to
> > > > > > numpy-discussion-le...@python.org
> > > > > >
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > > > > > Member address: sebast...@sipsolutions.net
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > NumPy-Discussion mailing list -- numpy-discussion@python.org
> > > > > To unsubscribe send an email to
> > > > > numpy-discussion-le...@python.org
> > > > >
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > > > > Member address: fal...@gmail.com
> > > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > NumPy-Discussion mailing list -- numpy-discussion@python.org
> > > > To unsubscribe send an email to numpy-discussion-le...@python.org
> > > > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > > > Member address: sebast...@sipsolutions.net
> > >
> > >
> > > _______________________________________________
> > > NumPy-Discussion mailing list -- numpy-discussion@python.org
> > > To unsubscribe send an email to numpy-discussion-le...@python.org
> > > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > > Member address: fal...@gmail.com
> > >
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list -- numpy-discussion@python.org
> > To unsubscribe send an email to numpy-discussion-le...@python.org
> > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > Member address: sebast...@sipsolutions.net
>
>
> _______________________________________________
> NumPy-Discussion mailing list -- numpy-discussion@python.org
> To unsubscribe send an email to numpy-discussion-le...@python.org
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: fal...@gmail.com
>


-- 
Francesc Alted
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to